您好,登錄后才能下訂單哦!
這里定義了一個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();
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。