我正在尝试编写一个函数,用于组合任意数量的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
但是仍然报错。
有没有办法解决这个问题?