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

Python 为什么在字符串格式中使用元组,python,syntax,Python,Syntax,我遇到了这样的代码 print "Users connected: %d" % (userCount, ) 我在想,有没有什么理由不把它们写下来 print "Users connected: %d" % userCount 它们似乎具有相同的输出如果只有一个变量进行替换,它们最终将是完全相同的 从: 给定格式%值(在您的情况下格式=“已连接的用户:%d”和值=用户计数) 如果格式需要单个参数, 值可以是单个非元组 对象否则,值必须是 具有确切项数的元组 由格式字符串或 单个映射对象(例如

我遇到了这样的代码

print "Users connected: %d" % (userCount, )
我在想,有没有什么理由不把它们写下来

print "Users connected: %d" % userCount

它们似乎具有相同的输出

如果只有一个变量进行替换,它们最终将是完全相同的

从:

给定
格式%值
(在您的情况下
格式
=“已连接的用户:%d”和
=用户计数)

如果格式需要单个参数, 值可以是单个非元组 对象否则,值必须是 具有确切项数的元组 由格式字符串或 单个映射对象(例如 (字典)


在这种情况下,是,因为只传递项。如果需要传递多个项,则需要一个元组

print 'There are %d user connected %s' % (userCount, 'today')

是的,它们有,但括号用于在这种情况下对变量进行分组

print "Hi there. I am %s and i am %d years old"%(name, age)

这就是基本用法,一个或多个变量…

它们的输出相同,但代码看起来不同。多年来,每一位软件开发人员都根据他们所犯的错误类型开发了一种“风格”。如果您倾向于忘记单元素元组中的逗号,或者您为不同版本的Python编写代码,或者您只是想在需要添加更多参数的情况下让您的生活更轻松,那么这可能会导致上面的代码“我总是使用元组”。

如果您的变量包含元组,没有显式元组的代码可能会咬到您

>>> 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
>nums=(1,2,3,4)
>>>打印“调试:%r”%(nums)
调试:(1,2,3,4)
>>>打印“调试:%r”%nums
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:在字符串格式化过程中并非所有参数都已转换
因此,始终在格式字符串语法中使用元组是防御性编码的一部分