Почему эти два «х» относятся к разным переменным?
В этом коде x в лямбде ссылается на x в операторе for. Такy[0]()
возвращает 2:
x = 0
y = [lambda : x for x in range(3)]
y[0]()
Но в этом коде x в лямбда-выражении относится к глобальному x, поэтомуx[0]()
возвращает глобальный х сам:
x = [lambda : x for x in range(3)]
x[0]()
Я хочу знать, почему x в лямбде ссылается на локальный x в первом фрагменте кода, но глобальный x во втором фрагменте кода.