«

用简洁的易懂的语言解析python装饰器的执行流程

qkabcd 发布于 阅读:410 IT技术


Python装饰器的执行流程(三步走)


1. 定义阶段:函数头上贴标签

当你写 @装饰器 时,相当于告诉 Python:“把这个函数包装一下”
示例代码:

def 装饰器(原函数):       # 装饰器函数(负责包装)
    def 新函数():         # 新函数会替代原函数
        print("装饰器:开始")  
        原函数()          # 调用原函数
        print("装饰器:结束")
    return 新函数         # 返回包装后的新函数

@装饰器                  # 相当于:我的函数 = 装饰器(我的函数)
def 我的函数():
    print("原函数执行")

2. 执行阶段:装饰器立刻生效

装饰器在代码加载时立即执行(比如导入模块或运行脚本时),而不是等到调用函数!
执行流程:

  1. 调用装饰器函数:Python 会把 我的函数 作为参数传给 装饰器
  2. 生成新函数:装饰器返回 新函数,替换原来的 我的函数
    此时,我的函数 已经变成了 新函数

3. 调用阶段:实际执行的是包装后的函数

当你调用 我的函数() 时,实际执行的是 新函数
输出结果:

装饰器:开始  
原函数执行  
装饰器:结束

一句话总结流程

“先包装,再替换”

  1. 定义时@装饰器 触发装饰器函数执行,生成新函数。
  2. 调用时:执行的是被装饰器包裹后的新函数。

类比理解:礼物的包装

  1. 原函数:礼物本身
  2. 装饰器:包装盒和彩带(在礼物外面加一层包装)
  3. 调用函数:拆开包装盒,最终拿到礼物(原函数逻辑)

python