python裝飾器原理 Python裝飾器原理

2021-10-10 03:51:44 字數 1313 閱讀 5623

裝飾器(decorator)是物件導向設計模式的一種,這種模式的核心思想是在不改變原來核心業務邏輯**的情況下,對函式或類物件進行額外的修飾。python中的裝飾器由python直譯器直接支援,其定義形式如下:

@decorator

def core_service:

要理解上述**的含義,我們從自定義函式裝飾器的原理出發。以下是示例**:

importos, sys

defdecorator():

print('get in decorator')

func()

returndecorator

defcore_service():

print('get in core_service')

if__name__ == '__main__':

core_service()

執行結果:

get in decorator

get in core_service

以上編寫裝飾器**的步驟比較多,且模式是固定的,因此python提供了語言級別的封裝。上述**可以抽象成如下形式,結果同上:

importos, sys

defdecorator():

print('get in decorator')

func()

returndecorator

print('get in core_service')

if__name__ == '__main__':

core_service()

defcore_service():

print('get in core_service')

python直譯器會將這段**解析成以下形式:

defcore_service():

print('get in core_service')

通過以上分析,我們已經清楚了裝飾器原理。真實的裝飾器還會帶有各種引數,實現各種複雜的功能,這些都是建立在這個基本原理的基礎之上。下面我們再通過乙個類裝飾器的示例**來結束這個主題:

importos, sys

defdecorator():

print('get in decorator')

returncls()

returndecorator

def__init__(self):

print('new core object')

if__name__ == '__main__':

core = core()

執行結果:

get in decorator

new core object

裝飾器原理

裝飾器,原理 開放封閉原則 def outer func func 原來的f1函式 def inner args,kwargs args,kwargs裝飾器就這麼寫,可以應對多個引數 print ok1 r func args,kwargs r等於none print ok2 return r re...

PYTHON 裝飾器 的應用原理

今天回顧了一下裝飾器知識,來記錄一下個人的體悟.看了幾個大神的部落格,對裝飾器的解釋如下 假設我們要增強函式的功能,比如,在函式呼叫前後自動列印,但又不希望修改函式的定義,這種在 執行期間動態增加功能的方式,稱之為 裝飾器 decorator 我個人覺得說的太籠統,因為我下面的 完成了上述的要求卻不...

python裝飾器 Python 裝飾器

簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...