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

时间:2010-11-10 07:46:47

标签: python syntax

我遇到了像

这样的代码
print "Users connected: %d" % (userCount, )

我在想,是否有任何理由不写

print "Users connected: %d" % userCount

他们似乎有相同的输出

5 个答案:

答案 0 :(得分: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

因此,始终在格式字符串语法中使用元组是防御性编码的一部分。

答案 1 :(得分:0)

如果您有一个替换变量,它们就会完全相同。

来自docs

给定format % values(在您的情况下format =“用户已关联:%d”和values = userCount)

  

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

所以它的基本用法是一个或多个变量......

答案 4 :(得分:-1)

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

相关问题