裝飾器原理python python中的裝飾器原理

2021-10-19 06:41:42 字數 908 閱讀 7757

裝飾器,顧名思義,就是對函式進行裝飾,所謂裝飾,就是為了對函式進行包裝,或者說修飾,以實現功能擴充套件但又不改變原函式的目的,通常用於對許多不同的函式進行相同功能的擴充套件的場景。

常見如:對某函式進行執行時間測試 ,web中對某些頁面進行是否已登入的校驗等。

以下便是將不同頁面的登入校驗做成裝飾器的樣例:

python中裝飾器的寫法

裝飾器的寫法具有閉包的所有特點,以下以登入校驗為例

def decorator(need_decorated_fun):

if 'session_id' in request.keys():

need_decorated_fun(request,*args, **kwargs)

else:

print('session不存在,即將進入登入頁面:')

需要被裝飾的函式

def my_info(request):

print('已進入%s的個人中心頁面' % request.get('username'))

裝飾器的呼叫原理:

呼叫裝飾器(閉包函式),傳入需要被裝飾的函式名(物件),返回裝飾器的內部包裝函式

呼叫裝飾器返回的內部包裝函式,傳入需要被裝飾函式所需的引數,返回被裝飾後執行結果

此處呼叫結果如下:

呼叫結果1.png

常用方法

常用語法糖對需要被裝飾的函式進行包裝,給需要裝飾的函式加「@裝飾器名」,這種情況直接呼叫要被裝飾函式即可

@decorator

def my_order(request):

print('已進入%s的個人訂單頁面' % request.get('username'))

# 直接呼叫要被裝飾函式即可實現

my_order({})

直接呼叫結果:

呼叫結果2.png

裝飾器原理

裝飾器,原理 開放封閉原則 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裝飾器原理 Python裝飾器原理

裝飾器 decorator 是物件導向設計模式的一種,這種模式的核心思想是在不改變原來核心業務邏輯 的情況下,對函式或類物件進行額外的修飾。python中的裝飾器由python直譯器直接支援,其定義形式如下 decorator def core service 要理解上述 的含義,我們從自定義函式裝...

py py裝飾器原理

算是py語言的個特性功能吧.其他js還沒接觸到有沒有這個功能 主要亮點 在不修改現有函式的功能要求下,豐富現有函式功能.def f1 print f1 func deff2 print f2 func deff3 print f3 func deff4 print f4 func deff5 pri...