为什么我的代码没有结束

时间:2013-12-13 17:19:20

标签: python tuples infinite-loop function-composition

它假设是功能组合。 我认为问题是当funcs中只剩下一个函数时。我希望它是一个空元组,但它不能像那样识别并进入无限循环

谢谢! :)

def compose(*funcs):
    if len(funcs)==0:
        return lambda x:x
    f=funcs[0]
    return lambda x: f(compose(funcs[1:])(x))

1 个答案:

答案 0 :(得分:6)

您的compose函数定义为使用*args。这意味着在lambda表达式中调用时,它总是需要一个参数,funcs列表永远不会为空。这就是它无休止地复原的原因。

您希望将定义更改为def compose(funcs)(推荐),或使用compose(*funcs[1:])进行调用。