Your first str.format()
call is a regular method call with 3 arguments, there is no tuple involved there. Your second call uses the *
splat call syntax; the str.format()
call receives 3 separate individual arguments, it doesn't care that those came from a tuple.
Formatting strings with f
don't use a method call, so you can't use either technique. Each slot in a f'..'
formatting string is instead executed as a regular Python expression.
You'll have to extract your values from the tuple directly:
f'{t[0]}, {t[1]}, {t[2]}'
or first expand your tuple into new local variables:
a, b, c = t
f'{a}, {b}, {c}'
or simply continue to use str.format()
. You don't have to use an f'..'
formatting string, this is a new, additional feature to the language, not a replacement for str.format()
.
From PEP 498 -- Literal String Interpolation:
This PEP does not propose to remove or deprecate any of the existing string formatting mechanisms.