裝飾器,顧名思義,就是對函式進行裝飾,所謂裝飾,就是為了對函式進行包裝,或者說修飾,以實現功能擴充套件但又不改變原函式的目的,通常用於對許多不同的函式進行相同功能的擴充套件的場景。
常見如:對某函式進行執行時間測試 ,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...