在python参考思维拼图中的lambda

Boj*_*vic 6 python lambda reference

考虑这个例子

def dump(value):
    print value

items = []    
for i in range(0, 2):
    items.append(lambda: dump(i))

for item in items:
    item()
Run Code Online (Sandbox Code Playgroud)

输出:

1
1
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到:

0
1
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

您可以在lambda上使用带有默认值的参数:

for i in range(0, 2):
    items.append(lambda i=i: dump(i))
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为默认值是在定义函数时计算的,而不是在调用函数时计算的.