python裝飾器使用實(shí)例詳解
這篇文章主要介紹了python裝飾器使用實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
python裝飾器的作用就是在不想改變?cè)瘮?shù)代碼的情況下,增加新的功能.主要應(yīng)用了python閉包的概念,現(xiàn)在用1個(gè)小例子說明
import time
def foo():
time.sleep(1)
def bar():
time.sleep(2)
def show_time(f):
def inner():
start_time = time.time()
f()
end_time = time.time()
print(end_time-start_time)
return inner
#show_time(f) is a decoration function
foo = show_time(foo)
bar = show_time(bar)
foo()
bar()
上面的代碼定義了兩個(gè)函數(shù)foo()和bar(). 通過裝飾器函數(shù)show_time(f),在其內(nèi)部定義了另一個(gè)閉包函數(shù)inner(),再通過foo=show_time(foo),bar=show_time(bar)語句將foo()和bar()函數(shù)同裝飾器函數(shù)關(guān)聯(lián)起來,從而實(shí)現(xiàn)了不改變foo()和bar()函數(shù)代碼,增加打印程序執(zhí)行時(shí)間的功能.程序的執(zhí)行結(jié)果如下:
1.0011370182 2.00142788887
顯然,程序在沒有改變?cè)瘮?shù)的情況下,實(shí)現(xiàn)了調(diào)用原函數(shù)顯示程序運(yùn)行時(shí)間的功能.
上面的小程序可以將調(diào)用裝飾器的語句改成@decoration的形式,效果是造價(jià)的,改變后的程序如下,其功能和上面的程序完全相同.
import time
@show_time #foo = show_time(foo)
def foo():
time.sleep(1)
@show_time #bar = show_time(bar)
def bar():
time.sleep(2)
def show_time(f):
def inner():
start_time = time.time()
f()
end_time = time.time()
print(end_time-start_time)
return inner
#show_time(f) is a decoration function
foo()
bar()
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)PowerPoint演示文稿到圖片的批量轉(zhuǎn)換
PowerPoint演示文稿作為展示創(chuàng)意、分享知識(shí)和表達(dá)觀點(diǎn)的重要工具,被廣泛應(yīng)用于教育、商務(wù)匯報(bào)及個(gè)人項(xiàng)目展示等領(lǐng)域,用Python代碼可以高效地實(shí)現(xiàn)PowerPoint演示文稿到圖片的批量轉(zhuǎn)換,從而提升工作效率,文本將介紹如何使用Python實(shí)現(xiàn)PowerPoint演示文稿到圖片的轉(zhuǎn)換2024-06-06
Python 基于FIR實(shí)現(xiàn)Hilbert濾波器求信號(hào)包絡(luò)詳解
今天小編就為大家分享一篇Python 基于FIR實(shí)現(xiàn)Hilbert濾波器求信號(hào)包絡(luò)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python字符串和正則表達(dá)式中的反斜杠(''\'')問題詳解
在本篇文章里小編給大家整理的是關(guān)于Python字符串和正則表達(dá)式中的反斜杠('\')問題以及相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。2019-09-09
Python+django實(shí)現(xiàn)文件上傳
本系列以可操作性為主,介紹如何通過django web框架來實(shí)現(xiàn)一些簡(jiǎn)單的功能。每一篇文章都具有完整性和獨(dú)立性。使用新手在動(dòng)手做的過程中體會(huì)web開發(fā)的過程,過程中細(xì)節(jié)請(qǐng)參考相關(guān)文檔。2016-01-01
Python之eval()函數(shù)危險(xiǎn)性淺析
這篇文章主要介紹了Python之eval()函數(shù)危險(xiǎn)性淺析,需要的朋友可以參考下2014-07-07
Python實(shí)現(xiàn)簡(jiǎn)單層次聚類算法以及可視化
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單層次聚類算法以及可視化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
python將一組數(shù)分成每3個(gè)一組的實(shí)例
今天小編就為大家分享一篇python將一組數(shù)分成每3個(gè)一組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11

