這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)python中的裝飾器有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司是專業(yè)的延慶網(wǎng)站建設(shè)公司,延慶接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行延慶網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!python 的裝飾器,可以用來(lái)實(shí)現(xiàn),類似spring AOP 類似的功能。一樣可以用來(lái)記錄某個(gè)方法執(zhí)行前做什么,執(zhí)行后做什么,或者用來(lái)記錄日志,運(yùn)行的時(shí)間等,更有甚者,用這個(gè)來(lái)做權(quán)限攔截,也未嘗不可。從兩個(gè)方面來(lái)描述python 的裝飾模式:
1. 對(duì)普通方法的裝飾
2. 對(duì)在 class 類中的方法的裝飾,不需要給參數(shù)的情況
3. 對(duì)在 class 類中的方法的裝飾,需要給參數(shù)的情況
一,對(duì)普通方法的裝飾。比如,要計(jì)算一個(gè)一個(gè)方法執(zhí)行的時(shí)間.
#coding:utf-8 import time def timeit(func): def wrapper(*args, **kv): start = time.clock() print '開始執(zhí)行' func(*args, **kv) end =time.clock() print '花費(fèi)時(shí)間:', end - start return wrapper @timeit def foo(): print 'in foo()' if __name__=='__main__': foo()
運(yùn)行結(jié)果:
開始執(zhí)行
in foo()
花費(fèi)時(shí)間: 6.55415628267e-05
可以看到,計(jì)算出了時(shí)間差。而不是像普通方法一樣,寫在一個(gè)函數(shù)里面實(shí)現(xiàn)。
二、對(duì)在 class 類中的方法的裝飾,不需要給參數(shù)的情況
#coding:utf-8 import time def timeit(func): def wrapper(*args, **kv): start = time.clock() print '開始執(zhí)行' func(*args, **kv) end =time.clock() print '花費(fèi)時(shí)間:', end - start return wrapper class MySpendTime(object): def __init__(self): pass @timeit def foo(self): print 'in foo()' spendtime=MySpendTime() spendtime.foo()
運(yùn)行結(jié)果:
開始執(zhí)行
in foo()
花費(fèi)時(shí)間: 4.42208134735e-05
三、對(duì)在 class 類中的方法的裝飾,需要給參數(shù)的情況
#coding:utf-8 ''' Created on 2012-11-1 @author: yihaomen.com ''' def UpdateUI(msg, step): print u"內(nèi)容:", msg print u"步驟:到第%s步了" % step def dec(func): def wapper(self, *args, **kwargs): func(self,*args, **kwargs) return wapper return dec class Command(object): def Excute(self): self.Work1st() self.Work2nd() self.Work3rd() @UpdateUI("開始第一步","1") def Work1st(self): print "Work1st" @UpdateUI("開始第二步", 2) def Work2nd(self): print "Work2nd" @UpdateUI("開始第三步", 3) def Work3rd(self): print "Work3rd" if __name__=="__main__": command = Command() command.Excute()
運(yùn)行結(jié)果:
內(nèi)容: 開始第一步
步驟:到第1步了
內(nèi)容: 開始第二步
步驟:到第2步了
內(nèi)容: 開始第三步
步驟:到第3步了
Work1st
Work2nd
Work3rd
上述就是小編為大家分享的python中的裝飾器有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站標(biāo)題:python中的裝飾器有哪些-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://aaarwkj.com/article36/ccdosg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣、小程序開發(fā)、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容