更改
x.append(lambda : pv(v))为
x.append(lambda v=v: pv(v))。
你可能希望“ python lambdas在后台绑定到本地变量指向的引用”,但这不是Python的工作方式。Python在调用函数时(而不是在创建函数时)查找变量名。使用默认参数是可行的,因为默认参数是在创建函数时(而不是在调用函数时)求值的。
这对于lambdas而言并不特殊。考虑:
x = "before foo defined"def foo(): print xx = "after foo was defined"foo()
输出:
after foo was defined



