Я пытаюсь создать функции внутри цикла и хранить их в словаре. Проблема в том, что все записи в словаре кажутся окончанием сопоставления с последней созданной функцией. Код выглядит следующим образом:Создание функций в цикле
d = {}
def test(**kwargs):
for k in kwargs:
def f():
print k, kwargs[k]
d[k] = f
f()
test(foo=1, bar=2)
print 'should print the same output as before'
d['foo']()
d['bar']()
Это выходы:
foo 1
bar 2
should print the same output as before
bar 2
bar 2
Любая идея, почему?
в качестве напоминания о себе: http://docs.python-guide.org/en/latest/writing/gotchas/#late-binding-closures –