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

Barry Warsaw barry at python.org
Thu Aug 16 22:16:49 CEST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Aug 16, 2007, at 3:52 PM, skip at pobox.com wrote:

>     STeVe> I honestly can't see the point of keeping this::
>
>>>>> '%-10s bought %02i apples for %3.2f' % ('John', 8, 3.78)
>     STeVe>     'John       bought 08 apples for 3.78'
>
>     STeVe> alongside this::
>
>>>>> '{0:-10} bought {1:02i} apples for {2:3.2f}'.format('John', 8,  
>>>>> 3.78)
>     STeVe>     'John       bought 08 apples for 3.78'
>
>     STeVe> They're so similar I don't see why you think the latter  
> is no
>     STeVe> longer "easy and powerful".
>
> You mean other than:
>
>    * the new is more verbose than the old
>    * the curly braces and [012]: prefixes are just syntactic sugar  
> when
>      converting old to new
>    * in situations where the format string isn't a literal that  
> mechanical
>      translation from old to new won't be possible
>    * lots of people are familiar with the old format, few with the new

There's one other problem that I see, though it might be minor or  
infrequent enough not to matter.  %s positional placeholders are  
easily to generate programmatically than {#} placeholders.   Think  
about translating this:

def make_query(flag1, flag2):
     base_query = 'SELECT %s from %s WHERE name = %s '
     if flag1:
         base_query += 'AND age = %s '
     if flag2:
         base_query += 'AND height = %s '
     base_query = 'AND gender = %s'
     return base_query

- -Barry

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iQCVAwUBRsSwsXEjvBPtnXfVAQLyPgP+P/bnNZhZUGbAcM6lDJdACVYmEFh3bGDR
NJH874DLXp7fsn5iLJ3Fel7eiWqLZ0/lvGYEmAAz/4SYagKFnrYAFTsDKglFroiL
bHzZBKHHuf/Db1oNJBcuQakpbhddX0WMu+XxcKXbgUK87tJE4kbaZPTjU8WF5XDW
EriR/UZBZ40=
=qHQs
-----END PGP SIGNATURE-----


More information about the Python-3000 mailing list