Python ';%s';%';somestring';
以下是以下几个例子:Python ';%s';%';somestring';,python,django,Python,Django,以下是以下几个例子: 这种字符串格式的意义是什么?乍一看,它看起来不合理,但它确实有好处,可以强制结果为字符串(或unicode字符串),而不是以前的任何结果。做同样事情的另一种方法可能是在format参数(或unicode)上调用str。作者说,你最好问问。这可能只是一种个人风格 不过,Django在某些情况下确实会对字符串使用代理对象,因此可能需要将它们强制为“实际”字符串。我相信这些代理是用于i18n/l10n目的的(不要引用我的话,也可能是为了在需要之前避免db查找,或者其他一些原因)。
这种字符串格式的意义是什么?乍一看,它看起来不合理,但它确实有好处,可以强制结果为字符串(或unicode字符串),而不是以前的任何结果。做同样事情的另一种方法可能是在format参数(或unicode)上调用
str
。作者说,你最好问问。这可能只是一种个人风格
不过,Django在某些情况下确实会对字符串使用代理对象,因此可能需要将它们强制为“实际”字符串。我相信这些代理是用于i18n/l10n目的的(不要引用我的话,也可能是为了在需要之前避免db查找,或者其他一些原因)。也许作者习惯于严格类型化语言,但他在python中忽略了它,这是他使python比它更严格类型化的方法
这里-为了使输入/输出参数的类型只对读者清楚,因为假设所有参数都按预期工作,这对python本身是无用的。另一个想法:也许这是在考虑将来可能的实现的情况下完成的?self.title和request.GET[…]当前已经是所需的类型,但是实现详细信息将来可能会更改,并且它们可能不再是unicode字符串或字符串
现在,我会使用str()和unicode(),不过…这只是我的习惯。在这两种情况下,它们已经是字符串了。CharacterFields返回unicode,RequestDicts返回strs。对于解释器来说没有用,但这只是我的挑剔。好吧,Python确实有一个编译器和解释器,但这是一个运行时的东西,所以解释器不会在意。我的观点是提供的
isinstance(x,unicode)
两个表达式x
和u'%s'%x
在语义上是等价的。同时,它们在语法上不同,处理方式也不同(生成不同的字节码)。
# 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']