可能重复:
What do (lambda) function closures capture in Python?
lambda function don't closure the parameter in Python?创建拉姆达一个循环内
我试图在循环中创建lambda表达式,超过对象的列表迭代:
lambdas_list = []
for obj in obj_list:
lambdas_list.append(lambda : obj.some_var)
现在,如果我遍历lambda表达式列表并且像这样调用它们:
for f in lambdas_list:
print f()
我得到相同的值。这是obj_list
中最后一个obj
的值,因为这是列表迭代器块中的最后一个变量。对代码进行一次很好的(pythonic)重写以使其工作的任何想法?
请参阅http://stackoverflow.com/questions/2295290/what-do-lambda-function-closures-capture-in-python/2295372#2295372和http://stackoverflow.com/questions/7514093/lambda - 功能 - 不要闭合-的参数功能于蟒蛇。 –
最具描述性的答案:http://stackoverflow.com/questions/938429/scope-of-python-lambda-functions-and-their-parameters/938493#938493 –