您好,登錄后才能下訂單哦!
這里定義了一個func函數(shù),打印‘我是func函數(shù)’
def func():
print('我是func函數(shù)');
time.sleep(1);
假設(shè),想要在func()函數(shù)的基礎(chǔ)之上新增的一個功能,計算func函數(shù)執(zhí)行所用的時間
import time;#時間模塊,處理時間操作
#開閉原則,對擴展開放,對修改封閉
def func():
print('我是func函數(shù)');
time.sleep(1);#休眠一秒
#tools方法就是func方法的裝飾器
def tool():
def inner():#利用了高階函數(shù)
#開始的時間
starttime=time.time();
func();#調(diào)用函數(shù)執(zhí)行上面的方法
#結(jié)束的時間
endtime=time.time();
print('用時:%s秒'%(endtime-starttime));
return inner;
inner=tool();
inner();
####################調(diào)用的方式混亂 以上策略不推薦
#接下來使用裝飾器,這種在代碼運行期間動態(tài)增加功能的方式,稱之為“裝飾器”(Decorator)。本質(zhì)上,decorator就是一個返回函數(shù)的高階函數(shù)。
def logger(flag):
#裝飾器
def tool(f):#f:func方法的方法名
def inner():#利用了高階函數(shù)
#開始的時間
starttime=time.time();
f();#真正的執(zhí)行方法,調(diào)用了func
#結(jié)束的時間
endtime=time.time();
print('用時:%s秒'%(endtime-starttime));
if flag=='true':
print('你傳入了TRUE變量')
return inner;#內(nèi)層方法的函數(shù)名
return tool;
#主方法。想要給修飾器傳參,在修飾器外重新生成修飾器
@logger('true')
def func():
print('我是func函數(shù)');
time.sleep(1);#休眠一秒
func();
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。