Странное поведение закрытия в питоне
У меня есть следующий простой код:
def get():
return [lambda: i for i in [1, 2, 3]]
for f in get():
print(f())
Как и ожидалось из моих знаний Python, вывод равен 3 - весь список будет содержать последнее значениеi
, Но как это работает внутри?
AFAIK, переменные python - это просто ссылки на объекты, поэтому первое закрытие должно сначала включать объектi
ссылка - и этот объект определенно равен 1, а не 3 O_O. Как так получилось, что закрытие python заключает в себе переменную вместо объекта этой ссылки на переменную? Сохраняет ли имя переменной в виде обычного текста, некоторые & quot; ссылку на переменную & quot; или что?