【自记】Python 中 简化装饰器使用的便捷写法语法糖(Syntactic Sugar)示例
def outer(func): # 装饰器函数def inner():print("装饰器逻辑:执行前") # 装饰器的前置操作func() # 调用原函数print("装饰器逻辑:执行后") # 装饰器的后置操作return inner # 返回内层函数@outer # 语法糖:等价于 sleep = outer(sleep)
def sleep():print("睡眠中……") # 原函数逻辑# 调用被装饰后的sleep函数
sleep()
执行过程详解:
- 当运行
sleep()
时,由于@outer
的作用,此时的sleep
已经被替换成了outer
函数返回的inner
函数。 - 所以调用
sleep()
实际上就是调用inner()
函数:- 先执行
print("装饰器逻辑:执行前")
- 再执行
func()
(这里的func
就是原来的sleep
函数),打印睡眠中……
- 最后执行
print("装饰器逻辑:执行后")
- 先执行
输出结果:
装饰器逻辑:执行前
睡眠中……
装饰器逻辑:执行后
这样就完整展示了从定义装饰器、装饰函数到最终调用的全过程,以及装饰器如何在原函数执行前后添加额外逻辑。