一开始感觉有点难理解不知道为啥但是看了这段代码就秒懂了。这就是一个简单的装饰器的例子说白了就是在装饰器里新建了一个新函数新函数会调用老函数但是会自己装饰一些内容。最后返回这个新函数替代老函数的返回。def decorator(old_func): def new_func(): print(调用前) old_func() print(调用后) return new_func含义是decorator(old_func)接收旧函数new_func()定义一个新函数old_func()在新函数里面调用旧函数return new_func把新函数返回出去替换原来的函数名所以之后decorator def hello(): print(hello)等价于def hello(): print(hello) hello decorator(hello)最后 hello() 实际执行的是 new_func()调用前hello调用后不过注意不是所有装饰器都必须这么写。有些装饰器只是做“注册”然后原样返回旧函数def decorator(old_func): registry.append(old_func) return old_func这种没有新函数包装只是把函数登记一下。有个很好的例子下面没有过多的装饰只是把老函数注册到了一个字典class A2AServer: def __init__(self): self.skills {} # 存放所有技能 def skill(self, name): # 这一层接收技能名称如 multiply返回一个装饰器函数 def decorator(func): # 这一层接收你写的函数把它注册到 skills 字典里 self.skills[name] func print(f✅ 技能 {name} 注册成功) return func # 这里原样返回你的函数 return decorator # 现在你就能用上面那种写法了 calculator A2AServer() calculator.skill(multiply) def multiply_numbers(query): return 计算结果... # 检查是否注册成功 print(calculator.skills) # {multiply: function multiply_numbers ...}Python 解释器看到知道要执行multiply_numbers calculator.skill(multiply)(multiply_numbers)第三步calculator.skill(multiply)调用skill方法传入multiplydef skill(self, name): # name multiply def decorator(func): # 还没执行只是定义了内部函数 self.skills[name] func print(f✅ 技能 {name} 注册成功) return func return decorator # 返回 decorator 这个函数本身calculator.skill(multiply)的返回值是decorator这个函数。此时代码等价于multiply_numbers decorator(multiply_numbers)第四步decorator(multiply_numbers)把multiply_numbers这个函数作为参数调用decoratordef decorator(func): # func multiply_numbers 这个函数 self.skills[name] func # self.skills[multiply] multiply_numbers print(f✅ 技能 {name} 注册成功) # 输出: ✅ 技能 multiply 注册成功 return func # 返回 multiply_numbers 本身decorator做了两件事把multiply_numbers存进calculator.skills[multiply]把multiply_numbers原样返回第五步multiply_numbers decorator(multiply_numbers)decorator返回了multiply_numbers本身又赋值给multiply_numbers。所以multiply_numbers还是原来的函数没有变。只是在这个过程中被注册到了calculator.skills字典里。【定义阶段代码加载时】1. calculator A2AServer()→ calculator.skills {}2. calculator.skill(multiply)→ 调用 calculator.skill(multiply)→ 返回 decorator 函数→ 调用 decorator(multiply_numbers)→ self.skills[multiply] multiply_numbers→ 输出: ✅ 技能 multiply 注册成功→ 返回 multiply_numbers→ multiply_numbers multiply_numbers不变3. print(calculator.skills)→ 输出: {multiply: function multiply_numbers at 0x...}总结所以装饰器是什么就是接收一个老函数返回一个新函数。但是新函数里面也会执行老函数不过会增加一点装饰逻辑。