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不明白就看下面吧
05-11 16:05
查看更多