在Python lambdas中卷曲

时间:2017-06-28 13:22:32

标签: python python-2.7 lambda scope currying

我试图在Python 2.7中编写一个天真的curried函数,但看起来内部lambda无法访问父lambda范围。

为简单起见,我们来看看这个功能:

d3.selectAll

内部lambda的范围无法访问外部范围(Python无法识别add = lambda a: lambda b: a + b )。

是否有方便的方法可以访问外部范围?

1 个答案:

答案 0 :(得分:2)

这个例子在python 2.7.11

中似乎对我有用
add = lambda a: lambda b: a + b
f = add(1)
print f(2)
3
print f(10)
11

但更复杂的例子可能会失败。 lambda函数存储对封闭范围中变量的引用,而不是它们的值。这可能有助于解决更复杂的问题:https://stackoverflow.com/a/938493/8131703