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