You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现链式执行多函数的chain函数问题求解

现有代码问题

你的实现存在两个核心错误:

  • chain函数没有返回新的可调用对象,而是直接执行传入的函数,无法满足先传入函数生成组合函数、后续再传入实际参数执行的需求
  • 循环执行函数时没有保存上一步的执行结果,也没有将结果作为下一个函数的输入,且没有返回最终执行结果
正确实现
def chain(*funcs):
    # 定义要返回的新函数,接收初始执行参数
    def execute(initial):
        result = initial
        for func in funcs:
            result = func(result)
        return result
    return execute
效果验证

使用你给出的示例测试:

my_func = chain(lambda x: x + 2, lambda x: (x/4, x//4))
print(my_func(37))

输出和预期完全一致:

(9.75, 9)
可选扩展

如果需要支持第一个函数接收多个初始参数,可以调整实现如下:

def chain(*funcs):
    def execute(*args, **kwargs):
        # 第一个函数直接接收所有传入的参数
        result = funcs[0](*args, **kwargs)
        for func in funcs[1:]:
            result = func(result)
        return result
    return execute

该版本支持如下调用:chain(lambda a,b: a+b, lambda x:x*3)(2,5),执行结果为21。

内容的提问来源于stack exchange,提问作者Keyreall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:54:05