function call questions
Frank Millman
frank at chagford.com
Sat Oct 22 09:14:29 EDT 2016
wrote in message
news:9c91a4cf-1f3e-43b3-b75c-afc96b0b406e at googlegroups.com...
> I have read Anssi's post already before I sent the post. To be frankly, I
can't understand why he got the right answer. I'm sorry for my silly. "So
when we assign to r again, it's the empty dict inside t (the one accessed
by key 'a')". I do can't understand why this happens. that is the reason why
I have asked for this once again and again. There must be some import point
I missed but I don't what is it.
Let's try this -
>>> t = {}
>>> r = t
>>> r = r.setdefault('a', {})
>>> t
{'a': {}}
I think you are happy up to this point.
We now have three objects -
"t" is a dictionary
'a' is a key in the dictionary
{} is the value associated with the key 'a' in "t"
I think you are happy up to this point.
The question is, what is "r"?
Before the assignment, "r" was a reference to the dictionary referenced by
"t".
After the assignment, "r" no longer refers to "t". It is now a reference to
the
third object listed above, the {} that is the value associated with the key
'a'.
>>> t
{'a': {}}
>>> t['a']
{}
>>> r
{}
>>> t['a] is r
True
Keep looking at this until it sinks in. "r" and "t['a']" are *the same
object*. We just have two ways of accessing it.
Try adding some key/values to the empty dictionary -
>>> r['x'] = 99
>>> r
{'x': 99}
>>> t['a']
{'x': 99}
>>> t
{'a': {'x': 99}}
I will pause at this point, and give you a moment to absorb that.
Hopefully, the penny will drop and everything will become clear.
If not, let us know which of the above steps you do not understand.
Good luck - keep plugging away, and you will get there :-)
Frank
P.S. I assume you understand that the lines prefixed with '>>>' are to be
entered while in the python interpreter. It is really important that you
type these lines in yourself and examine the results.
More information about the Python-list
mailing list