我遇到了像
这样的代码print "Users connected: %d" % (userCount, )
我在想,是否有任何理由不写
print "Users connected: %d" % userCount
他们似乎有相同的输出
答案 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编写代码,或者您只是想让您的生活更轻松,以防您需要添加更多参数,那么可能会导致“我总是使用元组“作为上面的代码。