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

这个输入:

'%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没有匹配的变量.

上一篇:python中的XOR交换算法?


下一篇:Python元组:不使用for循环进行比较和合并