擅长:python、mysql、java
<p>当您创建lambda时,<code>i</code>没有被捕获(如您所愿)。相反,这两个函数都引用外部for循环中的<code>i</code>,该循环在函数创建之后和运行之前都会发生变化。要捕获它,可以使用默认值:</p>
<pre><code>for i in range(0,2):
cmd = lambda i=i: sys.stdout.write(str(i))
tk.Button(text="print '%d'" % i,command=cmd).pack()
</code></pre>