def outer(func):  # 装饰器函数
def inner():
print("装饰器逻辑:执行前")  # 装饰器的前置操作
func()  # 调用原函数
print("装饰器逻辑:执行后")  # 装饰器的后置操作
return inner  # 返回内层函数
@outer  # 语法糖:等价于 sleep = outer(sleep)
def sleep():
print("睡眠中……")  # 原函数逻辑
# 调用被装饰后的sleep函数
sleep()

执行过程详解:

  1. 当运行 sleep() 时,由于 @outer 的作用,此时的 sleep 已经被替换成了 outer 函数返回的 inner 函数。
  2. 所以调用 sleep() 实际上就是调用 inner() 函数:
    • 先执行 print("装饰器逻辑:执行前")
    • 再执行 func()(这里的 func 就是原来的 sleep 函数),打印 睡眠中……
    • 最后执行 print("装饰器逻辑:执行后")

输出结果:

装饰器逻辑:执行前
睡眠中……
装饰器逻辑:执行后

        这样就完整展示了从定义装饰器、装饰函数到最终调用的全过程,以及装饰器如何在原函数执行前后添加额外逻辑。

posted on 2025-09-19 16:04  lxjshuju  阅读(3)  评论(0)    收藏  举报