[Python-3000] Please don't kill the % operator...

Eric Smith eric+python-dev at trueblade.com
Thu Aug 16 22:34:19 CEST 2007


skip at pobox.com wrote:
 >     Brett> But how is::
 >
 >     Brett>   "{0} is happy to see {1}".format('Brett', 'Christian')
 >
 >     Brett> that less easier to read than::
 >
 >     Brett>   "%s is happy to see %s" % ('Brett', 'Christian')
 >
 >     Brett> ?  Yes, PEP 3101 style is more to type but it isn't 
grievous; we
 >     Brett> have just been spoiled by the overloading of the % 
operator.  And
 >     Brett> I don't know how newbies think these days, but I know I 
find the
 >     Brett> numeric markers much easier to follow then the '%s', 
especially
 >     Brett> if the string ends up becoming long.
 >
 > If you decide to insert another format token in the middle the new is 
more
 > error-prone than the old:
 >
 >     "{0} asks {1} if he is happy to see {1}".format('Brett', 'Skip', 
'Christian')
 >
 >                                         ^^^ whoops
 >
 > vs:
 >
 >     "%s asks %s if he is happy to see %s" % ('Brett', 'Skip', 
'Christian')

The whole point of the indexes is that the order now doesn't matter:

"{0} asks {2} if he is happy to see {1}".format('Brett', 'Christian',
                                                 'Skip')

If you really have many items to expand, name them, and then it matters 
even less:
"{asker} asks {askee} if he is happy to see 
{person}".format(asker='Brett', person='Christian', askee='Skip')

Which I think is way better than the %-formatting equivalent.



More information about the Python-3000 mailing list