В приведенном ниже коде я намереваюсь иметь две кнопки, а при каждом нажатии «0» и «1» должны быть напечатаны соответственно на stdout. Однако, когда программа запускается, они оба печатают «1», что является последним значением, которое у меня было для итерации. Зачем?лямбда-итерация Python не работает по назначению
import Tkinter as tk
import sys
root = tk.Tk()
for i in range(0,2):
cmd = lambda: sys.stdout.write(str(i))
tk.Button(text="print '%d'" % i,command=cmd).pack()
root.mainloop()
, что статья не имеет отношения к питона – newacct
Он имеет ссылки на две подобные вопросы StackOverflow в Python, и этот вопрос выходит за рамки большинства языков с лямбда и mutables. – Brian