Python裝飾器函數
阿新 • • 發佈:2018-10-29
cor 動態 定義 增加 方式 休眠 混亂 一秒 變量 裝飾器函數
這裏定義了一個func函數,打印‘我是func函數’
def func():
print(‘我是func函數‘);
time.sleep(1);
假設,想要在func()函數的基礎之上新增的一個功能,計算func函數執行所用的時間
import time;#時間模塊,處理時間操作 #開閉原則,對擴展開放,對修改封閉 def func(): print(‘我是func函數‘); time.sleep(1);#休眠一秒 #tools方法就是func方法的裝飾器 def tool(): def inner():#利用了高階函數 #開始的時間 starttime=time.time(); func();#調用函數執行上面的方法 #結束的時間 endtime=time.time(); print(‘用時:%s秒‘%(endtime-starttime)); return inner; inner=tool(); inner();
####################調用的方式混亂 以上策略不推薦
#接下來使用裝飾器,這種在代碼運行期間動態增加功能的方式,稱之為“裝飾器”(Decorator)。本質上,decorator就是一個返回函數的高階函數。
def logger(flag): #裝飾器 def tool(f):#f:func方法的方法名 def inner():#利用了高階函數 #開始的時間 starttime=time.time(); f();#真正的執行方法,調用了func #結束的時間 endtime=time.time(); print(‘用時:%s秒‘%(endtime-starttime)); if flag==‘true‘: print(‘你傳入了TRUE變量‘) return inner;#內層方法的函數名 return tool; #主方法。想要給修飾器傳參,在修飾器外重新生成修飾器 @logger(‘true‘) def func(): print(‘我是func函數‘); time.sleep(1);#休眠一秒 func();
Python裝飾器函數