我在代码中看到了这个,
print('Job: {!r}, {!s}'.format(5,3))
,答案是
Job: 5, 3
{!r}
如何评估?它有什么特别的意义吗?
答案 0 :(得分:9)
!r
在插值前调用值repr()
。
对于整数,str()
,默认format()
和repr()
输出没有区别。对于其他类型,例如字符串,差异更明显:
>>> print('Repr of a string: {!r}'.format("She said: 'Hello, world!'"))
Repr of a string: "She said: 'Hello, world!'"
请注意,包含了引号。
见Format String Syntax; !
后面的字符指定应用于该值的转换。默认为无转换,但您可以使用!r
或!s
将值分别转换为其repr()
表示形式或str()
字符串输出。
当明确格式化为__format__()
输出时,通常在处理未指定显式bytes
方法的类型(例如repr()
)时使用转换(非常有用于调试输出),或者当你必须处理各种类型时。