【发布时间】:2016-11-10 00:58:21
【问题描述】:
我正在尝试编写一个包含任意数量的 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
但同样的错误也出现了。
有没有办法解决这个问题?
【问题讨论】:
标签: python python-3.x recursion lambda