我有一系列函数,例如:
>>> def f():
... print "f"
...
>>> def g():
... print "g"
...
>>> c=[f,g]
Run Code Online (Sandbox Code Playgroud)
然后我尝试创建两个lambda函数:
>>> i=0
>>> x=lambda: c[i]()
>>> i+=1
>>> y=lambda: c[i]()
Run Code Online (Sandbox Code Playgroud)
然后,打电话给他们:
>>> x()
g
>>> y()
g
Run Code Online (Sandbox Code Playgroud)
为什么lambda中的c [i]是一样的?
Ash*_*ary 10
那是因为lambda函数i在运行时获取全局变量的值:
>>> i = 0
>>> x=lambda z = i : c[z]() #assign the current value of `i` to a local variable inside lambda
>>> i+=1
>>> y =lambda z = i : c[z]()
>>> x()
f
>>> y()
g
Run Code Online (Sandbox Code Playgroud)
必须阅读: (lambda)函数闭包捕获了什么?
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |