[Python-Dev] transitioning from % to {} formatting

Nick Coghlan ncoghlan at gmail.com
Sat Oct 3 07:19:55 CEST 2009


Steven Bethard wrote:
> On Fri, Oct 2, 2009 at 12:43 PM, Martin Geisler <mg at lazybytes.net> wrote:
>> I hate calling methods on string literals, I think it looks very odd to
>> have code like this:
>>
>>  "Displaying {0} of {1} revisions".format(x, y)
>>
>> Will we be able to write this as
>>
>>  "Displaying {0} of {1} revisions" % (x, y)
>>
>> too?
> 
> I doubt it. One of the major complaints about the %-style formatting
> was that the use of % produced (somewhat) unexpected errors because of
> how operator precedence works::
> 
>>>> '{0}'.format(4 + 1)
> '5'
>>>> '%s' % 4 + 1
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: cannot concatenate 'str' and 'int' objects
> 
> Steve

The other major problem with the use of the mod operator is the bugs
encountered with "fmt % obj" when obj happened to be a tuple or a dict.

So no, the switch to a method rather than an operator was deliberate.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------


More information about the Python-Dev mailing list