Python variable assigning problems...

ICT Ezy ictezy at gmail.com
Fri Dec 11 13:54:04 EST 2015


On Friday, December 11, 2015 at 10:27:29 AM UTC-8, Jussi Piitulainen wrote:
> ICT Ezy writes:
> > On Friday, December 11, 2015 at 8:40:18 AM UTC-8, Ian wrote:
> >> 
> >> No, it actually happens left to right. "x = y = z = 0" means "assign
> >> 0 to x, then assign 0 to y, then assign 0 to z." It doesn't mean
> >> "assign 0 to z, then assign z to y, etc." This works:
> >> 
> >> >>> d = d['foo'] = {}
> >> >>> d
> >> {'foo': {...}}
> >> 
> >> This doesn't:
> >> 
> >> >>> del d
> >> >>> d['foo'] = d = {}
> >> Traceback (most recent call last):
> >>   File "<stdin>", line 1, in <module>
> >> NameError: name 'd' is not defined
> >
> > Deat Ian,
> > Thank you very much your answer, but
> > above answer from Robin Koch and your answer is different. What's the
> > actually process here? I agree with Robin Koch, but your answer is
> > correct. Pl explain differences ?
> 
> Python language reference, at 7.2 Assignment statements, says this:
> 
> # An assignment statement evaluates the expression list (remember that
> # this can be a single expression or a comma-separated list, the latter
> # yielding a tuple) and assigns the single resulting object to each of
> # the target lists, from left to right.
> 
> To simplify a bit, it's talking about a statement of this form:
> 
>      target_list = target_list = target_list = expression_list
> 
> And it says what Ian said: the value of the expression is assigned to
> each target *from left to right*.
> 
> <https://docs.python.org/3/reference/simple_stmts.html#assignment-statements>

Yes you correct!



More information about the Python-list mailing list