Ниже приведены 2 идентичные функции, но одна с помощью dict.get (), а другая - с помощью клавиши if в dict. 15, 30 и 45 он должен получить хэшированное значение, но вместо этого он возвращает значение по умолчанию - функция, даже если ключ уже находится в словаре?
D = dict()
def bugged(i):
def nest():
print('Not in D')
div, mod = divmod(i, 5)
D[i] = (div, mod)
return div, mod
print()
print(i)
print(i in D)
return D.get(i, nest())
def works(i):
def nest():
print('Not in D')
div, mod = divmod(i, 5)
D[i] = (div, mod)
return div, mod
print()
print(i)
print(i in D)
if i in D:
return D[i]
return nest()
f = works
f = bugged
for x in range (0,50,5):
f(x)
print('='*100)
for x in range (0,50,3):
f(x)