Я иду через djangobook и в одном из примеров автор пишет об этом:Указание на строку unicode?
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
ли «и» в передней части «% S% S» превратить строку в юникод?
Я иду через djangobook и в одном из примеров автор пишет об этом:Указание на строку unicode?
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
ли «и» в передней части «% S% S» превратить строку в юникод?
Он не совсем «превращает» строку в юникод, она представляет строку unicode. Цитирую documentation
В Python исходный код, литералы Unicode записываются как строки с префиксом характера «U» или «U» ... В идеале, вы хотите, чтобы иметь возможность написать литералов в естественном кодировании вашего языка. Затем вы могли бы исправить исходный код Python с помощью вашего любимого редактора, который бы отображал символы с акцентом естественно и имел правильные символы во время выполнения.
Да, этот префикс u
означает, что строка является Unicode. Существует еще одна вещь, чтобы знать - вы должны объявить кодировку исходного кода, так что Python знает, как обращаться со строкой:
http://docs.python.org/howto/unicode.html#unicode-literals-in-python-source-code
Оператор %
создаст новую строку, используя заданная строка как формат. Поскольку вы использовали ведущую u
, эта строка будет Unicode. Каждый %s
приведет к тому, что аргумент будет преобразован в Unicode, а также до того, как он будет вставлен в новую строку.