def deco1(func1):#func1拿到的是wrapper2的内存地址 def wrapper1(*args,**kwargs): print('deco1.wrapper正在运行') res1=func1(*args,**kwargs) return res1 return wrapper1() def deco2(func2):#func2拿到的是wrapper3的内存地址 def wrapper2(*args,**kwargs): print('deco2.wrapper2正在运行') res2=func2(*args,**kwargs) return res2 return wrapper2 def deco3(x): def outter3(func3): def wrapper3(*args,**kwargs): print('正在运行deco3.outter3下的outter3.wrapper3') res3=func3(*args,**kwargs) return res3 return wrapper3() return outter3 #加载顺序自下而上 @deco1 #deco1(wrapper2的内存地址) -----》index=wrapper1的内存地址 @deco2# deco2(wrapper3的内存地址)——————》index =wrapper2的内存地址 @deco3(111)#-----@outter3-----》index=outter3(index)---->index=wrapper3的内存地址 def index(x,y): print('from index %s:%s'%(x,y)) # print(index) index(2,3)
Python入门之多层装饰器
最新推荐文章于 2024-03-18 20:03:10 发布