【发布时间】:2015-08-15 07:54:29
【问题描述】:
为什么元组(或字典)必须与格式字符串一起使用:
"%s %d" % ("text", 42)
以下会有什么缺点?
"%s %d" % ["text", 42]
【问题讨论】:
-
因为语法是defined to use a tuple or mapping object。与您不会使用双引号来定义整数文字的原因相同。他们很可能让它使用列表,但为什么要这样做呢?
-
好问题。我不知道,但我怀疑这与列表的可变性有关
-
the source 中没有给出解释。我猜原因是“因为它需要大量的工作来实现,而且没有足够的人想要它”
-
有点奇怪,规则是如果它是一个元组,则解包,否则调用
__str__。如果规则是在只有一种格式规范的情况下调用__str__,并在有多个格式规范时尝试解包,那么它自然会适用于任何合理的事情。 -
我的猜测是让
*args更容易传递给 Cprintf()-like 内部函数。
标签: python string format-specifiers