增強乙個函式的功能,但又不想修改函式的定義,這種在**執行期間動態增加功能的方式,稱之為裝飾器。
def
log(func)
:def
(*args,
**kw)
:print
('callback {}'
.format
(func.__name__)
)return func(
*args,
**kw)
@log
defnow()
:print
('2019-3-21'
)now(
)
callback now
2019-3-21
log函式在這裡就相當於now函式的裝飾器,@log等價於執行了now = log(now) 宣告了log是now的裝飾器。practice:利用裝飾器在函式被呼叫時,列印該函式的執行時間
import time
defmetric
(func)
:def
(*args,
**kw)
:print
('callback: {} execute_time: {}'
.format
(func.__name__, time.localtime(time.time())
))return func(
*args,
**kw)
@metric
defnow()
:print
('2019-3-21'
)now(
)
callback: now execute_time: time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=23, tm_min=32, tm_sec=41, tm_wday=3, tm_yday=80, tm_isdst=0)
2019-3-21
python基礎學習 裝飾器
學習python時,我提出過如下問題 1.裝飾器是什麼?2.乙個 符號 乙個函式名就是乙個裝飾器了?3.什麼時候要用到這是神器的工具?到底怎麼理解 怎麼應用裝飾器,在本文中概括一下自己的理解。一 先舉栗子,逐層分析 1 獲取func函式的執行時間 2 import time 3 4 這是乙個計時函式...
Python基礎學習 函式裝飾器
裝飾器是python中非常實用的函式表達法,盡頭我們不講裝飾器原理,只講怎麼應用。裝飾器原理涉及物件導向以及函式本身也可以作為乙個引數被傳遞,原理比較簡單,但由於迴圈巢狀初學者難以理解。既然難以理解,那就先學會怎麼用,有了經驗,理解起來就相對容易了。首先我們要明白,裝飾器內函式是先於被裝飾函式執行的...
python基礎 裝飾器
裝飾器本質就是函式,功能是為其他函式新增附加功能。原則 不修改被修飾函式的源 不修改被修飾函式的呼叫方式 裝飾器的知識儲備 裝飾器 高階函式 函式巢狀 閉包 import time 定義乙個裝飾器計算函式執行時間 def timer func start time time.time res fun...