這里定義了一個func函數(shù),打印‘我是func函數(shù)’
創(chuàng)新互聯(lián)主營和田網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,和田h5小程序設(shè)計搭建,和田網(wǎng)站營銷推廣歡迎和田等地區(qū)企業(yè)咨詢
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();