Python基礎學習(裝飾器)

2021-09-13 04:14:06 字數 1060 閱讀 3515

增強乙個函式的功能,但又不想修改函式的定義,這種在**執行期間動態增加功能的方式,稱之為裝飾器。

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...