为什么在字符串格式中使用元组
我看到了一段代码,像这样:
print "Users connected: %d" % (userCount, )
我在想,为什么不把它写成这样呢:
print "Users connected: %d" % userCount
它们看起来输出的结果是一样的。
5 个回答
0
如果你只有一个变量来替换的话,它们最终是完全一样的。
根据文档:
假设有 format % values
(在你的例子中,format
是 "Users connected: %d",而 values
是 userCount)
如果格式需要一个参数,
那么 values 可以是一个单独的非元组对象。
否则,values 必须是一个元组,里面的元素数量要和格式字符串中指定的数量完全一致,
或者是一个单独的映射对象(比如字典)。
0
在这种情况下,是的,因为只传递了一个项目。如果你需要传递多个项目,就需要用到元组。
print 'There are %d user connected %s' % (userCount, 'today')
14
如果你的变量里包含一个元组,而你又没有明确使用元组,这可能会让你遇到麻烦。
>>> nums = (1, 2, 3, 4)
>>> print "debug: %r" % (nums, )
debug: (1, 2, 3, 4)
>>> print "debug: %r" % nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
所以,在格式字符串的语法中,总是使用元组是一种防御性编程的做法。