Вот мой код:
Код: Выделить всё
funcs = []
for i in range(5):
funcs.append(lambda x: x * i)
for f in funcs:
print(f(10))
Код: Выделить всё
0
10
20
30
40
Код: Выделить всё
40
40
40
40
40
Однако кажется, что все функции используют окончательное значение i после завершения цикла.
Почему это происходит в Python? Связано ли это с замыканиями или поздним связыванием? Как правильно создать эти функции, чтобы каждая из них сохраняла свое значение i?
Мобильная версия