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

Python装饰器问题:通过装饰器计算两数乘积后实现三数求和

错误原因

  • 你定义的装饰器内层函数直接返回了乘积c,没有调用被装饰的原函数actual_func,原函数的求和逻辑完全不会生效。
  • 原函数的作用域中不存在变量c,就算触发执行也会抛出NameError: name 'c' is not defined的报错,c是装饰器内层函数的局部变量,不会自动进入原函数的作用域。

修复方案

调整装饰器内层函数逻辑,计算得到c后将a、b、c三个参数传入原函数执行,同时修改原函数的参数列表接收三个入参即可:

def my_decorator(func):
    def addition(a, b):
        c = a * b
        # 调用原函数并传入三个参数
        return func(a, b, c)
    return addition

@my_decorator
def actual_func(a, b, c):
    return a + b + c

效果测试

调用actual_func(2, 3)会得到结果11,符合2 + 3 + (2*3) = 11的预期逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:08