function call questions

chenyong20000 at gmail.com chenyong20000 at gmail.com
Sat Oct 22 08:26:04 EDT 2016


在 2016年10月22日星期六 UTC+8下午5:06:22,Frank Millman写道:
> wrote in message 
> news:2853d778-857e-46fc-96a0-8d164c098499 at googlegroups.com...
> 
> 在 2016年10月20日星期四 UTC+8下午11:04:38,Frank Millman写道:
> > wrote in message
> > news:01cfd810-0561-40b1-a834-95a73dad6e56 at googlegroups.com...
> >
> > Hi Frank,
> >
> > thanks for your kind help. What confused me is at this line:
> >
> > >>> r = r.setdefault('b', {})
> >
> > and its previous one
> >
> > >>> r = r.setdefault('a', {})
> >
> > When r.setdefault('a',{}) is run, I understand it will return an empty {}. 
> > At this time both r & t reference to {'a':{}}, right? So when "r = 
> > r.setdefault('a',{})" is run, r reference to {} while t keeps the same as 
> > {'a':{}}.
> >
> > then comes r.setdefault('b',{}). What hinder me is here. since r has 
> > changed its reference to {}, r.setdefault('b',{}) will return {} again. So 
> > what does this done to t? why at this time t changes to {'a':'b':{}}? 
> > Sorry for my silly here. Thanks
> >
> 
> I don't know if you have been following the other posts in this thread.
> 
> There were some posts from Anssi Saari who was also confused by this, but 
> then yesterday he sent a post saying that he has now 'got it'.
> 
> I don't think I can do better than quote his explanation of what is 
> happening -
> 
> """
> OK, so what happens is that now t references the dictionary with {'a': {}} 
> and r references the empty dict inside that.
> 
> So when we assign to r again, it's the empty dict inside t (the one accessed 
> by key 'a') that changes to {'b': {}} and t becomes {'a': {'b': {}}}.
> """
> 
> That is exactly right.
> 
> Does that help?
> 
> Frank

Hi Frank,

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.



More information about the Python-list mailing list