Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';%s';%';somestring';_Python_Django - Fatal编程技术网

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']