2017-06-28 70 views
0

我想在Python 2.7中編寫一個天真的curried函數,但它似乎像內部lambda沒有訪問到父lambda範圍。柯林斯在Python lambdas

爲了簡單起見,讓我們這樣的功能:

add = lambda a: lambda b: a + b 

內的λ的範圍不能訪問外一個(Python不能識別a)。

是否有一種方便的方法來使外部範圍可訪問?

+3

它的工作原理是:>>> add = lambda x:lambda b:b + x; >>> add(5)(2); 7' –

回答

1

這個例子似乎是我在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

+1

如果是這樣,它應該是一個評論,而不是一個答案。 –