在这个特定实例中似乎%运算符和格式方法有点不一致。更可能的是,我只是不理解%运算符的工作方式。
>>> '{!r}'.format((1,2))
'(1, 2)'
为什么以下是错误?
>>> '%r' % (1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
>>>
它们是否更加一致,两者产生相同的结果?
以下是我原来的问题,请你忽略。
What’s wrong with the following snippet?
>>> '%r' % (1,2),{'a':10,'b':20}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
While
>>> '%r' % 'foo',(1,2),{'a':10,'b':20}
("'foo'", (1, 2), {'a': 10, 'b': 20})
works.
what is so magical about ‘foo’ here, besides the
>>> '{!r}'.format(((1,2), {'a':10,'b':20}))
"((1, 2), {'a': 10, 'b': 20})"
works.