[Python-Dev] Multiline with statement line continuation
steve at pearwood.info
Wed Aug 13 05:38:55 CEST 2014
On Tue, Aug 12, 2014 at 08:04:35AM -0500, Ian Cordasco wrote:
> I think by introducing parentheses we are going to risk seriously
> confusing users who may then try to write an assignment like
> a = (open('spam') as spam, open('eggs') as eggs)
If they try it, they will get a syntax error. Now, admittedly Python's
syntax error messages tend to be terse and cryptic, but it's still
enough to show that you can't do that.
py> a = (open('spam') as spam, open('eggs') as eggs)
File "<stdin>", line 1
a = (open('spam') as spam, open('eggs') as eggs)
SyntaxError: invalid syntax
I don't see this as a problem. There's no limit to the things that
people *might* do if they don't understand Python semantics:
for module in sys, math, os,
(and yes, I once tried this as a beginner) but they try it once, realise
it doesn't work, and never do it again.
> Because it looks like a tuple but isn't and I think the extra
> complexity this would add to the language would not be worth the
Do we have a problem with people thinking that, since tuples are
normally interchangable with lists, they can write this?
from module import [fe, fi, fo, fum,
spam, eggs, cheese]
and then being "seriously confused" by the syntax error they receive? Or
from (module import fe, fi, fo, fum,
spam, eggs, cheese)
It's not sufficient that people might try it, see it fails, and move on.
Your claim is that it will cause serious confusion. I just don't see
> If we simply look at Ruby for what happens when you have an
> overloaded syntax that means two different things, you can see why I'm
> against modifying this syntax.
That ship has sailed in Python, oh, 20+ years ago. Parens are used for
grouping, for tuples, for function calls, for parameter lists, class
base-classes, generator expressions and line continuations. I cannot
think of any examples where these multiple uses for parens has cause
meaningful confusion, and I don't think this one will either.
 Technically not, since it's the comma, not the ( ), which makes a
tuple, but a lot of people don't know that and treat it as if it the
parens were compulsary.
More information about the Python-Dev