它应该是函数组合。 我认为问题在于 funcs 中只剩下一个函数。我希望它是一个空元组,但它没有那样识别它并进入无限循环
谢谢! :)
def compose(*funcs):
if len(funcs)==0:
return lambda x:x
f=funcs[0]
return lambda x: f(compose(funcs[1:])(x))
请您参考如下方法:
你的 compose函数被定义为使用 *args .这意味着当在您的 lambda 表达式中调用时,它总是采用一个参数和 funcs。列表永远不会为空。这就是它无限递归的原因。
您想将定义更改为 def compose(funcs) (推荐),或用 compose(*funcs[1:]) 调用它.
