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

Markus Unterwaditzer markus at unterwaditzer.net
Thu May 16 07:18:04 CEST 2013


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?

Not sure why nobody mentioned it yet, maybe it's obviously not helping in this situation, but...

What if such multi-line strings have to have their own set of parens around them?

Valid:
do_foo(
    ("foo"
     "bar"),
     "baz"
)

Invalid:
do_foo(
    "foo"
     "bar",
     "baz"
)

-- Markus (from phone)


More information about the Python-ideas mailing list