裝飾器基礎知識《須有一定函式基礎》

2022-09-01 07:03:06 字數 947 閱讀 7562

1:裝飾器本質是函式,功能是裝飾其他函式,即為其它函式新增附加功能。

2:裝飾器需要遵循的原則:(1).

不能修改被裝飾函式的源**、(2).不能修改被裝飾函式的呼叫方式、即總結起來裝飾器對被裝飾的函式是完全透明的。

3.特定場景:假如現在有10個函式,每個函式都有自己要完成的功能,呼叫的時候怎麼呼叫呢?即test1()、test2()….test10()很簡單,現在有乙個需求:將test1至test10增加乙個新的功能,新功能為增加紀錄日誌的功能,怎麼做呢,只能乙個乙個函式將紀錄日誌的功能加進去,學習了函式之後貌似比較高階了,怎麼做呢,可以這樣做,定義乙個列印日誌的函式,然後在test1至test10中呼叫這個函式即可,避免了寫過多重複**。

5:一段可以統計函式執行時間的裝飾器

#

author:ju bo

import

time

deftimmer(func):

def warpper(*args,**kwargs):

start_time=time.time()

func()

stop_time=time.time()

print("

the func run time is %s

"%(stop_time-start_time))

return

warpper

@timmer

deftest1():

time.sleep(3)

print("

in the test1")

test1()

6:要實現這樣乙個裝飾器的功能需要哪些知識呢?

(1):函式即變數

(2):高階函式

(3):巢狀函式

最終高階函式+巢狀函式=裝飾器

由於裝飾器比較複雜,暫時寫到這裡,後續所有內容均會補上,需要跟讀貼溫馨提醒關注一下。

day9 函式基礎知識,裝飾器

個人理解裝飾器 無參裝飾器 功能用來拓展函式 為原函式新增其他功能 原則 1 原始碼不動 2 呼叫方式不變 1 既要新增新功能又要保持原函式 不變,那麼只能重新寫乙個函式 以outer函式為例 將原函式傳入outer函式中,然後在outer函式中新增新功能拓展函式,函式的呼叫巢狀 2 但是有要求呼叫...

python基礎知識整理 裝飾器

最簡裝飾器 def deco func def wrap args,kwargs return func args,kwargs return wrap deco def foo a,b return a b原理 對比被裝飾前後的foo.name 和foo.doc from functools im...

Python基礎知識之裝飾器decorator

本質是函式,裝飾其他函式 為其他函式新增附加功能。不能修改被裝飾的函式的源 不能修改被裝飾的函式的呼叫方式 高階函式 巢狀函式 裝飾器 1.函式即 變數 定義乙個函式就相當於定義乙個變數,即將函式體賦值給乙個變數名。python的記憶體 機制規定 當儲存在記憶體中的內容沒有對應的變數名指定時,則當記...