在Python中,在循环和分支中创建的变量没有作用域。您创建的所有函数
lambda都引用了相同的
i变量,该变量
9在循环的最后一次迭代中设置为。
解决方案是创建一个返回函数的函数,从而确定迭代器变量的范围。这就是该
functools.partial()方法行之有效的原因。例如:
def test(): def makefunc(i): return lambda x: p(i, x) a = [] for i in range(10): a.append(makefunc(i)) return a
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)