【发布时间】:2011-11-24 16:01:01
【问题描述】:
可能重复:
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)重写以使其工作的任何想法?
【问题讨论】:
-
最具描述性的答案:stackoverflow.com/questions/938429/…
标签: python