我在代码中看到过这个,
print('Job: {!r}, {!s}'.format(5,3))
,答案是
Job: 5, 3
{!r}
如何评估?在那里它有什么特殊的含义吗?
!r
在插入前调用repr()
的值
对于整数,str()
、默认format()
和repr()
的输出没有区别。对于其他类型,如字符串,差异更加明显:
>>> print('Repr of a string: {!r}'.format("She said: 'Hello, world!'"))
Repr of a string: "She said: 'Hello, world!'"
请注意,其中包括引号。
参见格式字符串语法;!
后面的字符指定应用于该值的转换。默认情况下没有转换,但您可以使用!r
或!s
分别将值转换为其repr()
表示或str()
字符串输出。
通常在处理没有指定显式__format__()
方法的类型(例如bytes
)、显式格式化为repr()
输出(对调试输出非常有帮助)或必须处理混合类型时使用转换。