是%运算符和格式方法一致吗?

时间:2018-04-14 08:04:36

标签: format python-3.5

在这个特定实例中似乎%运算符和格式方法有点不一致。更可能的是,我只是不理解%运算符的工作方式。

>>> '{!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.

0 个答案:

没有答案