可能重複:
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 –