2

可能的重复:
Python 中的词法闭包

假设我有以下代码

callbacks = []
for i in range(10):
  callbacks.append(lambda x: i)

中的所有函数都callbacks将返回i. 如何创建在创建时返回 i 的当前值的回调?

4

2 回答 2

6
for i in range(10):
  callbacks.append(lambda x = i : x)
于 2012-10-23T20:34:59.000 回答
3
In [113]: callbacks=[]

In [114]: for i in range(10):
    callbacks.append(lambda x=i:x**2)
   .....:     
   .....:     

In [117]: callbacks[0]()
Out[117]: 0

In [118]: callbacks[1]()
Out[118]: 1

In [119]: callbacks[2]()
Out[119]: 4

In [120]: callbacks[4]()
Out[120]: 16
于 2012-10-23T20:36:10.623 回答