python --多個疊加裝飾器
def deco1(func1): def wrapper1(*args,**kwargs): print("運行deco1_wrapper1") res1=func1(*args,**kwargs) return res1 return wrapper1 def deco2(func2): 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_wrapper3") res3=func3(*args,**kwargs) return res3 return wrapper3 return outter3 @deco1 #index=deco1(wrapper2的內存地址) ===> index=wrapper1 的內存地址 @deco2 #index=deco2(wrapper3的內存地址) ===> index=wrapper2 的內存地址 @deco3(1) #===>@outter3===> index=outter3(index) ===>index=wrapper3 的內存地址 def index(x,y): print("from index %s,%s" %(x,y)) index(1,2)
'''執行順序是自上而下的,即wrapper1 --> wrapper2--> wrapper3'''
/usr/local/bin/python3.8 /Users/futantan/PycharmProjects/S14/函數的學習/迭代器.py 運行deco1_wrapper1 運行deco2_wrapper2 運行deco3_wrapper3 from index 1,2 Process finished with exit code 0
每天進步一點點~~
浙公網安備 33010602011771號