[Python-ideas] Python-ideas Digest, Vol 131, Issue 106

Steven D'Aprano steve at pearwood.info
Tue Oct 31 13:31:07 EDT 2017


On Tue, Oct 31, 2017 at 10:31:50AM +0000, אלעזר wrote:

> Off topic: why can't we simply allow something like this:
> 
>     (the_bob) = (name for name in ('bob','fred') if name=='bob')

Parens don't make a tuple. They are just for grouping. If you want a 
tuple, you need a comma:

    the_bob, = ...

with or without the parens. It would be terribly surprising if (x) was a 
sequence on the left hand side but not on the right hand side of an 
assignment.


> Why does Python treat the parenthesis at the LHS as grouping parens?
> operators are not allowed anyway; (a + (b + c)) = [1] is syntax error.

a, (b, c), d = [1, "xy", 2]



> Currently
> 
>     (x) = 1
> 
> works, but I can't see why should it.

Why shouldn't it?

Its just a trivial case of the fact that the left hand side can be 
certain kinds of expressions, some of which require parens:

    (spam or ham)[x] = value

There are lots of possible expressions allowed on the LHS, and no good 
reason to prohibit (x) even though its pointless.



-- 
Steve


More information about the Python-ideas mailing list