У меня есть массив функций, например:лямбда-функции и список функций в Python
>>> def f():
... print "f"
...
>>> def g():
... print "g"
...
>>> c=[f,g]
Тогда я пытаюсь создать два лямбда-функции:
>>> i=0
>>> x=lambda: c[i]()
>>> i+=1
>>> y=lambda: c[i]()
И потом, их называют:
>>> x()
g
>>> y()
g
Почему c [i] в лямбда одинаковы?
_easy_ способ решить эту проблему - просто не создавать бесполезные «лямбды» в первую очередь. Просто замените эти две строки на 'x = c [i]' и 'y = c [i]', и вы получите именно те функции, которые вы хотели. Единственная причина когда-либо писать 'lambda: f()' вместо 'f' - это вставить' f' в пространство имен замыкания, чтобы посмотреть его позже, вместо того, чтобы просто использовать его. Вы не хотите делать это здесь, и на самом деле это именно то, что вызывает вашу проблему. – abarnert