Python裝飾器的應(yīng)用場景及實例用法
1、說明
裝飾本質(zhì)上是一個Python函數(shù),它能使其他函數(shù)在沒有任何代碼變化的情況下增加額外的功能。有了裝飾,我們可以抽出大量與函數(shù)功能無關(guān)的相同代碼,繼續(xù)重用。
2、應(yīng)用場景
包括插入日志、性能測試、事務(wù)處理、緩存和權(quán)限驗證。
3、實例
# 裝飾器
# func指函數(shù)
def decorator(func):
def wrapper(*args, **kwargs):
# 執(zhí)行函數(shù)內(nèi)部邏輯 打印時間
print(time.time(), args, kwargs)
# 執(zhí)行調(diào)用函數(shù)中邏輯 打印不同參數(shù)
func(*args, **kwargs)
return wrapper
# 一個參數(shù)
@decorator
def function(param):
print('function : this is decorator ' + param)
# 兩個參數(shù)
@decorator
def function1(param1, param2):
print('function1 : this is decorator ' + param1)
print('function1 : this is decorator ' + param2)
# 三個參數(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ù)注冊表
簡單注冊表
funcs = [] def register(func): funcs.append(func) return func @register def a(): return 3 @register def b(): return 5 # 訪問結(jié)果 result = [func() for func in funcs]
注冊表隔離(使用類的不同實例)
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)用場景及實例用法的文章就介紹到這了,更多相關(guān)Python裝飾器的應(yīng)用場景內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
科學(xué)計算與數(shù)據(jù)分析利器Python數(shù)據(jù)分析庫Scipy使用詳解
Scipy在現(xiàn)代科學(xué)研究和數(shù)據(jù)分析中是一個不可或缺的庫,它建立在NumPy的基礎(chǔ)上,提供了更多的高級科學(xué)計算功能,包括優(yōu)化、信號處理、統(tǒng)計分析、插值、線性代數(shù)等,本文將會學(xué)習(xí)Scipy庫的各種功能和用法,包括數(shù)學(xué)優(yōu)化、統(tǒng)計分析、信號處理和插值等方面2023-11-11
Python3內(nèi)置函數(shù)chr和ord實現(xiàn)進(jìn)制轉(zhuǎn)換
這篇文章主要介紹了Python3內(nèi)置函數(shù)chr和ord實現(xiàn)進(jìn)制轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
python算法學(xué)習(xí)之桶排序算法實例(分塊排序)
本代碼介紹了python算法學(xué)習(xí)中的桶排序算法實例,大家參考使用吧2013-12-12
Python正則表達(dá)式實現(xiàn)簡易計算器功能示例
這篇文章主要介紹了Python正則表達(dá)式實現(xiàn)簡易計算器功能,涉及Python正則判定及數(shù)值計算相關(guān)操作技巧,需要的朋友可以參考下2019-05-05
python安裝完成后可以進(jìn)行的后續(xù)步驟和注意事項小結(jié)
本文詳細(xì)介紹了安裝Python3后的后續(xù)步驟,包括驗證安裝、配置環(huán)境、安裝包、創(chuàng)建和運行腳本,以及使用虛擬環(huán)境,還強(qiáng)調(diào)了注意事項,如系統(tǒng)更新、包管理與安全,感興趣的朋友一起看看吧2025-01-01

