Python裝飾器的應(yīng)用場(chǎng)景及實(shí)例用法
1、說(shuō)明
裝飾本質(zhì)上是一個(gè)Python函數(shù),它能使其他函數(shù)在沒(méi)有任何代碼變化的情況下增加額外的功能。有了裝飾,我們可以抽出大量與函數(shù)功能無(wú)關(guān)的相同代碼,繼續(xù)重用。
2、應(yīng)用場(chǎng)景
包括插入日志、性能測(cè)試、事務(wù)處理、緩存和權(quán)限驗(yàn)證。
3、實(shí)例
# 裝飾器 # func指函數(shù) def decorator(func): def wrapper(*args, **kwargs): # 執(zhí)行函數(shù)內(nèi)部邏輯 打印時(shí)間 print(time.time(), args, kwargs) # 執(zhí)行調(diào)用函數(shù)中邏輯 打印不同參數(shù) func(*args, **kwargs) return wrapper # 一個(gè)參數(shù) @decorator def function(param): print('function : this is decorator ' + param) # 兩個(gè)參數(shù) @decorator def function1(param1, param2): print('function1 : this is decorator ' + param1) print('function1 : this is decorator ' + param2) # 三個(gè)參數(shù)(可變參數(shù)) @decorator def function2(param1, param2, **kwargs): print('function2 : this is decorator ' + param1) print('function2 : this is decorator ' + param2) print(kwargs) function('param') function1('param1' , 'param2') function2('param1' , 'param2', x=1,y=2,z=3)
內(nèi)容擴(kuò)展:
函數(shù)注冊(cè)表
簡(jiǎn)單注冊(cè)表
funcs = [] def register(func): funcs.append(func) return func @register def a(): return 3 @register def b(): return 5 # 訪問(wèn)結(jié)果 result = [func() for func in funcs]
注冊(cè)表隔離(使用類的不同實(shí)例)
class Registry(object): def __init__(self): self._funcs = [] def register(self, func): self._funcs.append(func) def run_all(self): return [func() for func in self._funcs] r1 = Registry() r2 = Registry() @r1.register def a(): return 3 @r2.register def b(): return 5 @r1.register @r2.register
到此這篇關(guān)于Python裝飾器的應(yīng)用場(chǎng)景及實(shí)例用法的文章就介紹到這了,更多相關(guān)Python裝飾器的應(yīng)用場(chǎng)景內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django之無(wú)名分組和有名分組的實(shí)現(xiàn)
這篇文章主要介紹了Django之無(wú)名分組和有名分組,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04pytorch 準(zhǔn)備、訓(xùn)練和測(cè)試自己的圖片數(shù)據(jù)的方法
這篇文章主要介紹了pytorch 準(zhǔn)備、訓(xùn)練和測(cè)試自己的圖片數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Python爬蟲(chóng)使用實(shí)例wallpaper問(wèn)題記錄
本文介紹解決中文亂碼的方法,以及Python爬蟲(chóng)處理數(shù)據(jù)、圖片URL的技巧,包括使用正則表達(dá)式處理字符串、URL替換等,還涉及單線程與多線程的應(yīng)用場(chǎng)景,如電腦壁紙和手機(jī)壁紙爬取,適合進(jìn)行Web數(shù)據(jù)抓取和處理的開(kāi)發(fā)者參考2024-09-09Python實(shí)現(xiàn)多項(xiàng)式擬合正弦函數(shù)詳情
這篇文章主要介紹了Python實(shí)現(xiàn)多項(xiàng)式擬合正弦函數(shù)詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08Python腳本實(shí)現(xiàn)隨機(jī)數(shù)據(jù)生成自由詳解
這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)腳本實(shí)現(xiàn)隨機(jī)數(shù)據(jù)生成自由,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-12-12Django JSonResponse對(duì)象的實(shí)現(xiàn)
本文主要介紹了Django JSonResponse對(duì)象的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03