Вот несколько примеров, взятых от 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']
Какой смысл этого строкового форматирования?
Это просто моя привычка. В этих случаях в этом нет необходимости.
На первый взгляд, он не выглядит разумным, но у него выгодно заставить результат быть строкой (или строкой Unicode), а не все, что было бы от. Еще один способ сделать то же самое, можно позвонить str
в аргументе формата (или Unicode).
Может быть, автор используется для строго набранных языков, и он пропускает его в Python, и это его способ сделать Python более строго напечатанным, чем оно.
Здесь - сделать типы входных / выходных параметров очистки только для читателя , поскольку при условии, что все работает, как ожидалось, это просто бесполезно для Python .
Вам, вероятно, лучше спросить Натан Боррор , автор. Это может быть просто личным стилем.
Django использует прокси-объекты для строк в некоторых случаях, поэтому может заставить их «фактические» строки. Я верю, что эти прокси предназначены для целей I18N / L10N (не процитируйте меня на этом, также могут быть, чтобы избежать поиска БД до необходимости или ряда других причин).
Другая идея: Может быть, это сделано с возможными будущими реализациями в уме? Self.title и request.get.get [...] в настоящее время уже нужный тип, но детали реализации могут измениться в будущем, и они могут перестать быть строкой Unicode или строкой.
Теперь я бы использовал str () и Unicode (), хотя ...