Skip to main content
 首页 » 编程设计

python之为什么我的代码没有结束

2025年05月04日17sky-heaven

它应该是函数组合。 我认为问题在于 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:]) 调用它.