Alan Gauld wrote:

"Lie Ryan" <lie.1...@gmail.com> wrote

I was a bit surprised this doesn't work though:

a, b += k, k


What would you expect?

I expect
a, b += c, d
to be
a += c; b += d

just like
a, b = c, d
to be
a = c; b = d

Remember that

a,b = c,d

is just tuple assignment without using parens (and parens are not part of the tuple definition)

So using tuples

a,b += k,k

would unwrap as

a,b = (a,b) + (k,k)   -> (a,b,k,k)

which should give an error since we are then unpacking 4 values
into two...

It doesn't really make sense.

That makes sense.

I agree "a, b += k, k" is rather ambiguous.

I disagree with the finer points of the explanation though, because in:
a, b += c, d
a, b is not really a tuple, but rather ltuple (as in a += b; a is the lvalue and be is the value). ltuple could (and probably should) have a different semantic for in-place assignment rather than the (current) non-sensical appending the ltuple with the value tuple. No?

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to