这个输入:
'%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
解决方法:
每个%s在独立的%符号后使用其中一个变量.在第一种情况下,有两个变量,while表达式和字典映射.
在第二种情况下,第一个%s采用字典映射并使用整个表达式,对其进行了评估.这使得第二个%s没有匹配的变量.