python簡易裝飾器 python裝飾器簡單理解

2021-10-11 07:34:26 字數 1164 閱讀 8267

裝飾器定義:1、把乙個函式名當作實參傳給另外乙個函式(在不修改裝飾函式源**的情況下為其新增功能)

2、返回值中包含函式名(不改變函式呼叫方式)

源**:

1 deff():2 deff():3 time.sleep(2)4 print('i am f')5

加基本計算程式執行時間函式

1 deff():2 print('i am f')3 time.sleep(2)4 defmy_time():5 s_time =time.time()6 f()7 e_time =time.time()8 print("消耗了%s秒"%(e_time -s_time))9 my_time()

1 #把func函式傳入

2 deff():3 print('i am f')4 time.sleep(2)5 def my_time(func): #傳入函式

6 s_time =time.time()7 f() #列印函式

8 e_time =time.time()9 print("%s消耗了%s秒"%(func.__name__,e_time -s_time))10 my_time(f) #

1 importtime2 deff():3 print('i am f')4 time.sleep(2)5 def my_time(func): #傳入函式 my_timer(f) func = f

14 f =n15 f()

定義乙個外函式,讓內函式進行返回 所以就有 外return,外return的是這個函式的返回值,而不是函式執行結果

@my_time #等價於f = my_time(f)

加要求,新增乙個log函式,且要在時間函式前

函式是從裡到外裝

如果源**有return值

15 #output:

16 耗時:2.001243829727173

17 none

改進:output:

耗時:2.000271797180176

n = i am f

能看到就是多了乙個內return,return做的是把返回值帶入原函式加返回值的話,return func()就是把func()的返回值返回

就要在列印時也要把返回值列印出來,所以就有了內return 只是把返回值return

源程式帶有乙個或多個引數

這樣輸入帶有引數的,就會正常返回多個引數

python學習篇之 簡易裝飾器

一 裝飾器簡介 1 什麼是裝飾器 裝飾器本質就是函式,為其他函式新增附加功能 2 原則 1 不修改被修飾函式的源 2 不修改被修飾函式的呼叫方式 開放封閉原則,程式上線後,就不應該更改內部源 3 裝飾器知識儲備 裝飾器 高階函式 函式巢狀 閉包 高階函式 1 函式接收的引數是乙個函式名 2 函式的返...

python裝飾器 Python 裝飾器

簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...

python裝飾器 裝飾器

由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...