1 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))
Run Code Online (Sandbox Code Playgroud)
您的compose功能已定义为使用*args.这意味着在lambda表达式中调用时,它总是需要一个参数,funcs列表永远不会为空.这就是它无休止地复原的原因.
您想要将定义更改为def compose(funcs)(推荐),或者将其调用compose(*funcs[1:]).