3
我想寫一個構成任何數量的lambda函數的函數。構成lambda表達式的遞歸錯誤
我有兩個簡單的lambda函數。
f = lambda x: x + 1
g = lambda x: x**2
我在排版功能的嘗試是這樣的:
def compose(*functions):
composed = lambda x: x # Function that returns input
for function in reversed(functions):
composed = lambda x: function(composed(x))
return composed
我的想法通過功能的可變數量是循環,每次使得composed
功能包括裏面的一個新功能。
然後,我可以做一個功能是f
的組成和g
c = compose(f, g)
所以調用c(5)
應該返回f(g(5))
,這是26但是,相反,我得到
RecursionError: maximum recursion depth exceeded
我想引入中間變量可能會解決問題。
def compose(*functions):
composed = lambda x: x # Function that returns input
for function in reversed(functions):
intermediate = lambda x: function(composed(x))
composed = intermediate
return composed
但是提出了同樣的錯誤。
有沒有辦法解決這個問題?
好的解決辦法,但你能發現OP的錯誤嗎? –
@ juanpa.arrivillaga看看它 –
是的,只是想出了它是由於遲綁定。 –