% formatting (was Re: Python equivalent of "lynx -dump"?)

Aahz Maruch aahz at netcom.com
Wed Mar 29 09:58:48 EST 2000


In article <eb93es8ja9tbrom92qp8psij1r8jmcigot at 4ax.com>,
Tim Roberts  <timr at probo.com> wrote:
>lewst <lewst at yahoo.com> wrote:
>>
>>        lynxcmd = "lynx -dump %s" %url
>
>I hope you do not mind if I ask a Python style question unrelated to your
>issue.  That source line contains an idiom I see often in the Python code,
>and I do not understand why.  To me, it seems wasteful to use the %
>operator where simple string concatenation will do the same job more
>quickly.  For example, isn't this just as clear?
>
>	lynxcmd = "lynx -dump " + url

In this particular case, it is as clear (and if I were writing the code,
I might well do it).  However, there are two caveats:

* As was already pointed out, a statement like

  sqlCmd = "update foo set bar = '%s' where baz = '%'" % (bar,baz)

is much more complicated using "+" concatenation.

* Believe it or not, "+" is actually slower than "%".  Because strings
are immutable, the performance of a tight loop with "+" is *horrible*.
(You have to copy the string each time.)  This tends to train Python
programmers into avoiding "+" for strings.
--
                      --- Aahz (Copyright 2000 by aahz at netcom.com)

Androgynous poly kinky vanilla queer het    <*>     http://www.rahul.net/aahz/
Hugs and backrubs -- I break Rule 6

Member of the Groucho Marx Fan Club  --Aahz



More information about the Python-list mailing list