簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的**前提下給函式增加新的功能。
一般而言,我們要想拓展原來函式**,最直接的辦法就是侵入**裡面修改,例如:import time
def func():
print("hello")
time.sleep(1)
print("world")
這是我們最原始的的乙個函式,然後我們試圖記錄下這個函式執行的總時間,那最簡單的做法就是:#原始侵入,篡改原函式
import time
def func():
starttime = time.time()
print("hello")
time.sleep(1)
print("world")
endtime = time.time()
msecs = (endtime - starttime)*1000
print("time is %d ms" %msecs)
但是如果你的boss在公司裡面和你說:「小祁,這段**是我們公司的核心**,你不能直接去改我們的核心**。」那該怎麼辦呢,我們仿照裝飾器先自己試著寫一下:#避免直接侵入原函式修改,但是生效需要再次執行函式
import time
def deco(func):
starttime = time.time()
func()
endtime = time.time()
msecs = (endtime - starttime)*1000
print("time is %d ms" %msecs)
def func():
print("hello")
time.sleep(1)
print("world")
if __name__ == '__main__':
f = func
deco(f)#只有把func()或者f()作為引數執行,新加入功能才會生效
print("f.__name__ is",f.__name__)#f的name就是func
這裡我們定義了乙個函式deco,它的引數是乙個函式,然後給這個函式嵌入了計時功能。然後你可以拍著胸脯對老闆說,看吧,不用動你原來的**,照樣拓展了它的函式功能。
更多學習內容,python學習網。
python裝飾器副作用 python裝飾器
python裝飾器是高階函式 但裝飾器是對傳入函式的功能的增強,用於拓展原函式功能的函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。裝飾器語法糖 使用 logger,這就是裝飾器語法 例 記錄函式的執行時常 pytho...
python裝飾器作用 理解python中的裝飾器
一 什麼是裝飾器?正如其名,裝飾器的作用是為已經存在的物件增加額外功能 裝飾 由此可使已有函式在無需 改動的情況下增加額外功能 裝飾器的本質是巢狀的函式且返回函式物件,即閉包。有關閉包的概念,可參考 理解python中的閉包 一文。二 裝飾器應用場景舉例 在介紹裝飾器之前,我們思考下遇到如下場景時的...
Python裝飾器中 wraps作用
裝飾器的作用 在不改變原有功能 的基礎上,新增額外的功能,如使用者驗證等。wraps view func 的作用 不改變使用裝飾器原有函式的結構 如name,doc 不使用 wraps裝飾器時候,看看 name doc 輸出的內容是什麼def decorator func this is decor...