python3學習之裝飾器
阿新 • • 發佈:2017-05-12
python
#定義裝飾器,outer參數是函數,返回也是函數 #作用:在函數執行前和執行後分別附加額外功能 def outer(func): def inner(*args, **kwargs): print("log") func(*args, **kwargs) print("Don‘t back") # return "r" return inner @outer def f1(a): print(a,"F1") @outer def f2(a,b): print("F2",a,b) f1(123) f2(123,456) #帶參數的裝飾器,在outer外邊又包裝了一層 def oo(arg): print("hihihihi") #此處的代碼,在裝飾器被調用時就被執行,不需要等被裝飾的函數被調用 def outer(func): def inner(*args, **kwargs): print(arg) print("log") func(*args, **kwargs) print("Don‘t back") print(arg) # return "r" return inner return outer def tt(func): def inner(*args, **kwargs): # print(arg) print("aaaaa") func(*args, **kwargs) print("ttttt") # print(arg) # return "r" return inner @tt @oo(123333) #可以多層裝飾,規則是:從上到下執行裝飾器 def f1(a): print(a,"F1") @oo(11111) def f2(a,b): print("F2",a,b) #f1(123) #f2(123,456) 結果: hihihihi hihihihi
python3學習之裝飾器