function call questions
chenyong20000 at gmail.com
chenyong20000 at gmail.com
Thu Oct 20 09:38:48 EDT 2016
在 2016年10月20日星期四 UTC+8下午1:32:18,Frank Millman写道:
> wrote in message
> news:5506e4d8-bd1d-4e56-8d1b-f71fa8293393 at googlegroups.com...
>
> 在 2016年10月19日星期三 UTC+8下午3:17:18,Peter Otten写道:
> > chenyong20000 at gmail.com wrote:
> >
> > > 在 2016年10月19日星期三 UTC+8上午11:46:28,MRAB写道:
> > >> On 2016-10-19 03:15, chenyong20000 at gmail.com wrote:
> > >> > Thanks Peter and Anssi for your kind help. Now I'm ok with the first
> > >> > question. But the second question still confused me. Why "it seems
> > >> > that
> > >> > after root = root.setdefault(ch,{}) tree['a'] and root are the same
> > >> > object" and follows tree['a']['b']? Thanks.
> > >> >
>
> > please forgive my stupid. I still can't follow this.
>
> Let's see if I can explain. I am using 't' and 'r' instead of 'tree' and
> 'root', but otherwise it is the same as your original example.
>
> >>> t = {}
> >>> r = t
> >>> id(t)
> 2542235910088
> >>> id(r)
> 2542235910088
>
> At this point, t and r are both references to the same empty dictionary.
>
> >>> r = r.setdefault('a', {})
>
> This has done two things.
>
> It has inserted the key 'a' into the dictionary, and set its value to {}.
>
> >>> t
> {'a': {}}
> >>> id(t)
> 2542235910088
>
> It has also rebound 'r' so that it now references the new empty dictionary
> that has been inserted.
>
> >>> r
> {}
> >>> id(r)
> 2542234429896
> >>>t['a']
> {}
> >>> id(t['a'])
> 2542234429896
>
> Now continue this process with r = r.setdefault('b', {}), and watch what
> happens.
>
> Hopefully this will help you to understand. Feel free to ask further if not
> sure.
>
> Frank Millman
Hi Frank,
thanks very much for your kind help. Your reply is clear. But I'm hindered by those you've not explained.
I'm always confused by "r = r.setdefault('a', {})". when the first loop finished, as what you have pointed out,
> >>> t
> {'a': {}}
> >>> r
> {}
Then next "r = r.setdefault('b', {})" will run again. Here what is "r" in "r.setdefault('b',{})"? According to final result, it should be "t['a']", which I can't understand. I thought the command is r.setdefault, so it should still be last "r", i.e., empty {}. Could you please let me know what I missed? thanks.
More information about the Python-list
mailing list