def wrapper1(func1):
def inner1():
print('w1 ,before')
func1()
print('w1 after')
return inner1
def wrapper2(func2):
def inner2():
print('w2 ,before')
func2()
print('w2 after')
return inner2
@wrapper2 # f =wrapper2(f) , func2=inner1函数 当执行完func2时, 就带表要去执行inner1, func1() 执行的是真正的原函数.
@wrapper1 # f =wrapper1(f) , func1=f原函数 f()=inner1
def f():
print('in f')
f() # f在这里 被我定义 变量,看下面理解,就ok了.
# 推荐一种方式 ,debug模式.
# 多个装饰器装饰一个函数相当于装饰器函数的嵌套 (相当于把另一个装饰器函数的inner方法作为参数传递给了另一个装饰器函数的形参func接收.) so不明白就看下面吧
相关文章
- 02-21第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
- 02-21python 中多个装饰器的执行顺序
- 02-21Python 多个装饰器装饰同一个函数
- 02-21python – 烧瓶中的自定义装饰器不工作?
- 02-21(python)在函数中使用装饰器进行彩色打印
- 02-21python – 在装饰器中修改docstring
- 02-21在Python中,是否可以使用相同的装饰器来装饰类和非类方法?
- 02-21嵌套的python装饰器?
- 02-21理解装饰器:未指定参数时返回类型是一个函数
- 02-21是否可以使用带参数的Python类装饰器?