Рассмотрим следующий код:
x = "foo"
def print_x():
print x
x = "bar"
print_x() # Outputs "bar"
Я думаю, что большинство людей не найдут это сбивающим с толку. Это ожидаемое поведение.
Итак, почему люди думают, что это будет иначе, когда это будет сделано в цикле? Я знаю, что сама совершила эту ошибку, но я не знаю почему. Это петля? Или, может быть, лямбда?
В конце концов, цикл представляет собой только более короткую версию:
adders= [0,1,2,3]
i = 0
adders[i] = lambda a: i+a
i = 1
adders[i] = lambda a: i+a
i = 2
adders[i] = lambda a: i+a
i = 3
adders[i] = lambda a: i+a