Tycho Andersen wrote:
On Fri, Jun 24, 2011 at 12:14:27AM -0700, Ethan Furman wrote:
The example given to me when I had this question:

--> x = x['huh'] = {}
--> x
{'huh': {...}}


As you can see, the creation of the dictionary is evaluated, and
bound to the name 'x'; then the key 'huh' is set to the same
dictionary.

Can you please elaborate? I really don't understand how this works at
all. I would have expected a NameError from this (obviously my mental
model is wrong).

This single line is equivalent to:

x = {}
x['huh'] = x

...but I don't understand how python's evaluation semantics get from
the one liner to the two liner/result at all.

\t

Think of it this way:

x = x['huh'] = {}

obj = {}       # RHS evaluated first (and only once)

x = obj        # then first LHS

x['huh'] = obj # then second LHS, etc


~Ethan~
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to