'% s'% 'somestring' - PullRequest
       9

'% s'% 'somestring'

5 голосов
/ 15 января 2010

Вот пара примеров, взятых из django-basic-apps :

# self.title is a unicode string already
def __unicode__(self):
        return u'%s' % self.title

# 'q' is a string
search_term = '%s' % request.GET['q']

Какой смысл форматировать эту строку?

Ответы [ 5 ]

3 голосов
/ 15 января 2010

Это просто моя привычка. В этих случаях это не обязательно.

1 голос
/ 15 января 2010

Вам, наверное, лучше спросить Натан Боррор , автор. Это может быть просто личный стиль.

В некоторых случаях Django использует прокси-объекты для строк, поэтому может быть необходимо заставить их «настоящие» строки. Я полагаю, что эти прокси-серверы предназначены для целей i18n / l10n (не цитируйте меня по этому поводу, возможно, следует также избегать просмотра БД до тех пор, пока это не потребуется, или по ряду других причин).

1 голос
/ 15 января 2010

На первый взгляд, это не выглядит разумным, но оно имеет преимущество, заключающееся в том, что в результате получается строка (или строка в кодировке Юникод), а не то, какой она была раньше. Другим способом сделать то же самое может быть вызов str для аргумента формата (или Unicode).

0 голосов
/ 15 января 2010

Другая идея: Может быть, это сделано с учетом возможных будущих реализаций? self.title и request.GET […] в настоящее время уже имеют требуемый тип, но детали реализации могут измениться в будущем, и они могут перестать быть строкой Unicode или строкой.

Теперь я бы использовал str () и unicode (), хотя ...

0 голосов
/ 15 января 2010

Может быть, автор привык к языкам со строгой типизацией, и он пропускает его в python, и это его способ сделать python более строго типизированным, чем он есть.

Здесь - чтобы сделать типы входных / выходных параметров понятными только для считывателя , поскольку при условии, что все работает должным образом, это просто бесполезно для самого python .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...