Странное поведение закрытия в питоне

У меня есть следующий простой код:

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; или что?

Ответы на вопрос(3)

Ваш ответ на вопрос