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