On Wed, Dec 16, 2020 at 4:58 AM Mark Polesky via Python-list
<python-list@python.org> wrote:
>
> Hi.
>
> # Running this script....
>
> D = {'a':1}
> def get_default():
>     print('Nobody expects this')
>     return 0
> print(D.get('a', get_default()))
>
> # ...generates this output:
>
> Nobody expects this
> 1
>
> ###
>
> Since I'm brand new to this community, I thought I'd ask here first... Is 
> this worthy of a bug report?  This behavior is definitely unexpected to me, 
> and I accidentally coded an endless loop in a mutual recursion situation 
> because of it.  Calling dict.get.__doc__ only gives this short sentence: 
> Return the value for key if key is in the dictionary, else default.  Nothing 
> in that docstring suggests that the default value is evaluated even if the 
> key exists, and I can't think of any good reason to do so.
>
> Am I missing something?
>

Seems what you want is the __missing__ method. Look into it - I think
it will do what you're expecting here.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to