您好,登錄后才能下訂單哦!
python中如何實現(xiàn)裝飾器模式,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
# 自定義裝飾器,old參數(shù)為原函數(shù) def decorator01(old): # 創(chuàng)建一個內(nèi)部函數(shù),在該內(nèi)部函數(shù)中調(diào)用原函數(shù),并在調(diào)用前后編寫擴充功能的代碼 # *args , **kwargs表示接受任意的可變參數(shù)以及關鍵字參數(shù) def new_function(*args , **kwargs): print('開始執(zhí)行~~~~') # 調(diào)用被擴展的函數(shù) result = old(*args , **kwargs) print('執(zhí)行結(jié)束~~~~') # 內(nèi)部函數(shù)返回原函數(shù)的執(zhí)行結(jié)果 return result # 返回內(nèi)部函數(shù)函數(shù) return new_function def decorator02(old): def new_function(*args , **kwargs): print('decorator02裝飾~開始執(zhí)行~~~~') # 調(diào)用被擴展的函數(shù) result = old(*args , **kwargs) print('decorator02裝飾~執(zhí)行結(jié)束~~~~') # 返回函數(shù)的執(zhí)行結(jié)果 return result # 返回新函數(shù) return new_function # 使用注解修飾原函數(shù) @decorator02 @decorator01 def say_hello(): print('大家好~~~') # 執(zhí)行原函數(shù),則會先執(zhí)行裝飾器中擴展的功能代碼 say_hello()
一個原函數(shù)可以被多個裝飾器修飾,裝飾器執(zhí)行的順序是從下到上,即從注解最近的裝飾器開始,依次向外執(zhí)行。
# 執(zhí)行結(jié)果 decorator02裝飾~開始執(zhí)行~~~~ 開始執(zhí)行~~~~ 大家好~~~ 執(zhí)行結(jié)束~~~~ decorator02裝飾~執(zhí)行結(jié)束~~~~
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。