+1; I've been bitten by this many times.

As already mentioned, one big use case where this is useful is having multiline string literals without having all the annoying indentation leak into your code. I think this could be easily fixed with a convenient .dedent() or .strip_margin() function.


On Fri, May 10, 2013 at 3:54 PM, MRAB <python@mrabarnett.plus.com> wrote:
On 10/05/2013 20:26, Alexander Belopolsky wrote:



On Fri, May 10, 2013 at 2:48 PM, Guido van Rossum <guido@python.org
<mailto:guido@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').


I had a similar experience just few weeks ago.  The bug was in a long
list written like this:

['item11', 'item12', ..., 'item17',
  'item21', 'item22', ..., 'item27'
  ...
  'item91', 'item92', ..., 'item97']

Clearly the bug crept in when more items were added.   (I try to keep
redundant commas at the end of the list to avoid this, but not everyone
likes this style.)


    Would it be reasonable to start deprecating this and eventually remove
    it from the language?


+1, but I would start by requiring () around concatenated strings.

I'm not so sure.

Currently, parentheses, brackets and braces effectively make Python ignore a newline within them.

(1
+2)

is the same as:

(1+2)

and:

[1
+2]

is the same as:

[1+2]

Under the proposal:

("a"
"b")

or:

("a" "b")

would be the same as:

("ab")

but:

["a"
"b"]

or:

["a" "b"]

would be a syntax error.


_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
http://mail.python.org/mailman/listinfo/python-ideas