看这个例子:
def my_print(val):
print val
lst = [1, 2, 3]
func_list = []
for x in lst:
func_list.append(lambda: my_print(x))
for func in func_list:
func()
"""
3
3
3
"""
func_list = []
for x in lst:
func_list.append(lambda aaa=x: my_print(aaa))
for func in func_list:
func()
"""
1
2
3
"""
lambda出现时是函数声明,:
右侧并不会管参数到底是哪个,所以要在左侧捕捉后传入。