0
我想在Python 2.7中編寫一個天真的curried函數,但它似乎像內部lambda沒有訪問到父lambda範圍。柯林斯在Python lambdas
爲了簡單起見,讓我們這樣的功能:
add = lambda a: lambda b: a + b
內的λ的範圍不能訪問外一個(Python不能識別a
)。
是否有一種方便的方法來使外部範圍可訪問?
我想在Python 2.7中編寫一個天真的curried函數,但它似乎像內部lambda沒有訪問到父lambda範圍。柯林斯在Python lambdas
爲了簡單起見,讓我們這樣的功能:
add = lambda a: lambda b: a + b
內的λ的範圍不能訪問外一個(Python不能識別a
)。
是否有一種方便的方法來使外部範圍可訪問?
這個例子似乎是我在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
如果是這樣,它應該是一個評論,而不是一個答案。 –
它的工作原理是:>>> add = lambda x:lambda b:b + x; >>> add(5)(2); 7' –