# 3、多个装饰器装饰一个函数
def wrapper1(f):
def inner1():
print('wrapper1, before func')
ret = f()
print('wrapper1, after func')
return ret
return inner1
def wrapper2(f):
def inner2():
print('wrapper2, before func')
ret = f()
print('wrapper2, after func')
return ret
return inner2
@wrapper2 # f = wrapper2(f) 里面的f新变量 = inner1 外面的f最新变量 = inner2
@wrapper1 # f = wrapper1(f) 里面的f函数名 外面的f新变量=inner1
def f():
print('in f')
f()
# '''
# 结果:
# wrapper2 ,before func
# wrapper1 ,before func
# in f
# wrapper1 ,after func
# wrapper2 ,after func
# '''