``def decorator(func):
print('----------开始--------------')
func()
print('----------结束--------------')
return func
def decorator2(func):
print('装饰器内部')
def add1():
print('----------开始2--------------')
func()
print('----------结束2--------------')
return add1
@decorator2
@decorator
def test():
print('我是test函数')
test()
``
输出结果:
----------开始--------------
我是test函数
----------结束--------------
装饰器内部
----------开始--------------
我是test2函数
----------结束--------------
我是test2函数
搜百度都说叠放装饰器都是自上而下执行的,为什么我这里没有先打印出decorator2的 ‘装饰器函数’
你这个装饰器写得是不对的,建议先仔细copy教程代码的装饰器函数、包裹函数、被修饰函数三层结构,明确被修饰函数在被调用时究竟真正执行的是哪一层函数。
然后你需要深入理解Python 在 import 时 和 运行时 分别执行哪部分代码
代码
dec.py
执行
python -c 'import dec
输出
执行
python dec.py
输出
从
@dec2
这一行代码开始,你可以替换理解为希望帮助你理解