为什么Python在特定情况下使用百分比运算符支持元组和字典格式?

时间:2016-06-14 21:12:14

标签: python dictionary tuples string-formatting

此输入:

'%s %(?)s' % {'?': 'a'}

导致此输出:

"{'?': 'a'} a"

它将源字符串中基于元组和基于字典的占位符替换为您单独使用其中任何一个时所期望的值。

但是,如果您在字符串中反转占位符的位置,则会出现TypeError:

In [2]: '%(?)s %s' % {'?': 'a'}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-7989b5f88c97> in <module>()
----> 1 '%(?)s %s' % {'?': 'a'}

TypeError: not enough arguments for format 

1 个答案:

答案 0 :(得分:0)

每个%s在独立的%符号后使用其中一个变量。在第一种情况下,有两个变量,while表达式和字典映射。

在第二种情况下,第一个%s采用字典映射并使用整个表达式,对其进行了评估。这使得第二个%s没有匹配的变量。