def wrapper1(func1): def inner1(): print('w1 ,before') func1() print('w1 after') return inner1def 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()=inner1def f(): print('in f')f() # f在这里 被我定义 变量,看下面理解,就ok了.# 推荐一种方式 ,debug模式.# 多个装饰器装饰一个函数相当于装饰器函数的嵌套 (相当于把另一个装饰器函数的inner方法作为参数传递给了另一个装饰器函数的形参func接收.) so不明白就看下面吧