为什么在字符串格式中使用元组

4 投票
5 回答
682 浏览
提问于 2025-04-16 06:50

我看到了一段代码,像这样:

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

所以,在格式字符串的语法中,总是使用元组是一种防御性编程的做法。

撰写回答