[Python-ideas] Implicit string literal concatenation considered harmful?

Ian Cordasco graffatcolmingov at gmail.com
Sat May 11 01:57:47 CEST 2013


On May 10, 2013 7:51 PM, "Nick Coghlan" <ncoghlan at gmail.com> wrote:
>
>
> On 11 May 2013 04:50, "Guido van Rossum" <guido at python.org> wrote:
> >
> > I just spent a few minutes staring at a bug caused by a missing comma
> > -- I got a mysterious argument count error because instead of foo('a',
> > 'b') I had written foo('a' 'b').
> >
> > This is a fairly common mistake, and IIRC at Google we even had a lint
> > rule against this (there was also a Python dialect used for some
> > specific purpose where this was explicitly forbidden).
> >
> > Now, with modern compiler technology, we can (and in fact do) evaluate
> > compile-time string literal concatenation with the '+' operator, so
> > there's really no reason to support 'a' 'b' any more. (The reason was
> > always rather flimsy; I copied it from C but the reason why it's
> > needed there doesn't really apply to Python, as it is mostly useful
> > inside macros.)
> >
> > Would it be reasonable to start deprecating this and eventually remove
> > it from the language?
>
> I could live with it if we get "dedent()" as a string method. I'd be even
happier if constant folding was extended to platform independent method
calls on literals, but I don't believe there's a sane way to maintain the
"platform independent" constraint.
>
> OTOH, it's almost on the scale of "remove string mod formatting".
Shipping at least a basic linting tool in the stdlib would probably be
almost as effective and substantially less disruptive. lib2to3 should
provide some decent infrastructure for that.

I have cc'd the code-quality mailing list since several linger authors are
subscribed there.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130510/190ecb0e/attachment.html>


More information about the Python-ideas mailing list