例子:
def A(func):
print("11111")
def c():
print("2222")
func()
print("33333")
return c
def B(func):
print("aaaa")
def c():
print("bbbb")
func()
print("cccc")
return c
@A
@B
def f():
print("test test")
f()
结果:
aaaa
11111
2222
bbbb
test test
cccc
33333
理解:
1 def 语句生成函数对象,而不是执行函数
2 单个装饰器 f=B(f) B函数返回值是一个新的函数对象
3 多个装饰器 f=A(B(f)) 参数传递,先完成的B(f)
4 闭包
网友评论