摘要:裝飾器(decorators)是 python 的乙個重要部分。簡單地說:他們是修改其他函式的功能的函式。他們有助於讓我們的**更簡短,也更pythonic(python範兒)。
一切皆物件:首先先舉個列子,
importtime
defadd(a,b):
start_time =time.time()
res =a+b
exec_time=time.time()-start_time
print("
".format(exec_time))
return res
如果,這個時候如果在計算減法函式(sub)的時間的話,又得重新寫一段**,在不使用裝飾器的情況下。
importtime
defadd(a,b):
start_time =time.time()
res =a+b
exec_time=time.time()-start_time
print("
".format(exec_time))
return res
不用裝飾器飾器的話,會顯得很麻煩,而且也不靈活。
所以我們要使用裝飾器,下面我們看一下用裝飾器的**。
importtime
#定義裝飾器
deftime_calc(func):
start_time =time.time()
f=func(*args,**kargs)
exec_time = time.time()-start_time
return
f
return
#使用裝飾器
@time_calc
defadd(a,b):
return a+b
@time_calc
defsub(a,b):
return a-b
這樣看起來比較好多了。
裝飾器的定義:
裝飾器本質上就是乙個python函式,它可以讓其它函式在不需要做任何**改動的前提下增加額外的功能,裝飾器的返回值也是乙個函式物件。它經常用於有切面需求的場景中,比如-- >插入日誌、效能測試、事務處理、快取、許可權校驗等場景。裝飾器是解決這類問題的絕佳設計,有了裝飾器,我們就可以抽離出大量與函式功能本身無關的雷同的**並且可以重複使用。
(有參裝飾器):帶引數的裝飾器和類裝飾器屬於高階的內容。在理解這些裝飾器之前,最好對函式的閉包和裝飾器的介面約定能夠有一定的了解。
可以這麼理解,當帶引數的裝飾器被打在某個函式上時,比如@outter(『critical『
)時,它其實就是乙個函式,會被馬上執行,
import time#定義裝飾器
def add(a,b):
return a+b
@time_calc
def sub(a,b):
return a-b
歐克 python的裝飾器先寫到這,本人還是萌新,還要多多學習。
python裝飾器 函式裝飾器,類裝飾器
只要實現此 模式,這個obj就叫乙個裝飾器 參考 函式裝飾器 例子 def decorator func def inner args,kwargs print before.res func args,kwargs print after.return res return inner decor...
python 裝飾器 函式裝飾器 類裝飾器
python函式裝飾器和類裝飾器筆記.usr bin env python coding utf 8 author ivan file decorators.py version from functools import wraps 裝飾器 目的是為了給函式新增附加功能 1.不帶引數裝飾器 此方式...
python裝飾器 裝飾器工廠函式
使用裝飾器實現如下所示的列印 小白聯盟def printequel func1 def inner1 print 15 func1 return inner1 def printstar func2 def inner2 print 15 func2 return inner2 printequel...