Python和lambda函数

Ser*_* jr 1 python lambda python-2.7

可能看起来像一个不起眼的问题(myabe),但为什么python表现得那样:

>>>a = []
>>>for i in xrange(5):
...    a.append(lambda: i + 1)

>>>a[0]()
5
>>>a[1]()
5
>>>a[2]()
5
>>>a[3]()
5
>>>a[4]()
5
Run Code Online (Sandbox Code Playgroud)

当存在不同的功能时:

>>aaa
[<function <lambda> at 0x100499d70>, <function <lambda> at 0x100499e60>, <function <lambda> at 0x100499ed8>, <function <lambda> at 0x100499de8>, <function <lambda> at 0x10049f050>]
Run Code Online (Sandbox Code Playgroud)

或者我错过了python文档中真正重要的东西?

thk*_*ang 6

封闭是建立在i其最终价值的基础上的4.

如果你想保持ilambda内部,你可以使用默认变量.

>>>for i in xrange(5):
...    a.append(lambda x=i: x + 1)
Run Code Online (Sandbox Code Playgroud)