Reputation: 230216
>>> import math
>>> print "{} {!s} {!r}".format(math.pi, math.pi, math.pi)
3.14159265359 3.14159265359 3.141592653589793
When is the !s
inside {}
meaningful?
Or in other words, when is calling str()
on a format()
argument meaningful?
Upvotes: 3
Views: 165
Reputation: 46647
Whenever the type to be printed implements __format__
in an an unsuitable way for your purpose. In this case, you can use !s
or !r
(and I think there is even !a
) to specify an alternate formatter.
You certainly won't need it for printing floating-point numbers, but probably for custom types.
Upvotes: 2