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

Eli Bendersky eliben at gmail.com
Sat May 11 01:27:32 CEST 2013


On Fri, May 10, 2013 at 11:48 AM, 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 would also be happy to see this error-prone syntax go (was bitten by it a
number of times in the past), but I have a practical question here:

Realistically, what does "start deprecating" and "eventually remove" means
here? This is a significant backwards-compatibility breaking change that
will *definitely* break existing code. So would it be removed just in
"Python 4"? Or are you talking about an actual 3.x release like "deprecate
in 3.4 and remove in 3.5" ?

Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130510/e663d4f5/attachment.html>


More information about the Python-ideas mailing list