>>> import math
>>> print "{} {!s} {!r}".format(math.pi, math.pi, math.pi)
3.14159265359 3.14159265359 3.141592653589793
什么时候在 {}
内部使用 !s
是有意义的?
换句话说,什么时候在调用 format()
函数时,在它的参数上调用 str()
是有意义的?
>>> import math
>>> print "{} {!s} {!r}".format(math.pi, math.pi, math.pi)
3.14159265359 3.14159265359 3.141592653589793
什么时候在 {}
内部使用 !s
是有意义的?
换句话说,什么时候在调用 format()
函数时,在它的参数上调用 str()
是有意义的?
如果要打印的类型没有适合您目的的__format__
实现。在这种情况下,您可以使用!s
或!r
(我认为甚至有!a
)来指定替代格式化程序。
对于打印浮点数,您肯定不需要它,但可能需要用于自定义类型。
__str__
方法的自定义类型应该放在首位。 - S.Lott