它应该是功能组成。
我认为问题是当func中只剩下一个函数时。我希望它是一个空的元组,但它无法识别出它并进入无限循环

谢谢! :)

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:])进行调用。

关于python - 为什么我的代码没有结束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20572303/

10-09 15:52