What meaning of this ""hello %s you are %s years old" % x"

Chris Angelico rosuav at gmail.com
Mon Jul 28 09:58:05 CEST 2014


On Mon, Jul 28, 2014 at 5:41 PM, Albert-Jan Roskam
<fomcl at yahoo.com.dmarc.invalid> wrote:
>> That's not tuple%tuple, but rather string%tuple.  And string%tuple is
>> the older method of formatting an output string from a template and a
>> tuple of values.  See
>> https://docs.python.org/2/library/stdtypes.html#string-formatting for
>> details.
>>
>> However, if you are just learning Python, you should probably use the
>> *newer* formatting operations.  See
>> https://docs.python.org/3.3/library/string.html#formatspec for details
>> of that.
>
> Do you know what was the reason/consideration to switch to a new formatting operation? Ability to have custom formatters with an own __format__ method?

Flexibility. You can do a few things with the other formatting style
that you can't do with percent-formatting. However, percent formatting
isn't going anywhere, and there's no particular reason to avoid it,
even in brand new code. It's more portable across languages (heaps of
C-inspired languages have a printf-style function that responds to the
same notations), more compact, and ample to a lot of situations, so
there's no need to go for the other style.

The only real downside of percent formatting is that, since it's an
operator rather than a function call, it can take only one argument -
so there's some magic with tuples, and a few extremely obscure corner
cases as a result. Not a reason to avoid it.

ChrisA



More information about the Python-list mailing list