設計乙個裝飾器,作用於任何函式上,列印函式執行時間

2021-10-06 02:34:19 字數 803 閱讀 1278

設計乙個裝飾器,作用於任何函式上,列印函式執行時間

import time

defmetric

(fn)

:# 匿名函式

defexecute_time

(*args,

**kwargs)

:#起始時間

start_time = time.time(

)#外部傳入的引數(函式傳參)

l=fn(

*args,

**kwargs)

#結束時間

end_time = time.time(

)print

('耗時:s'

.format

(end_time - start_time)

)return l

#返回函式的值

return execute_time

# 裝飾器用法,相當於metric(exexute_fn)

@metric

# 定義乙個普通的遍歷函式

defexecute_fn

(int):

boss =

0for i in

range

(int):

boss += i

i +=

1return boss

# 在裝飾器的作用下,相當於呼叫了metric函式中的execute_time函式,metric(execute_fn)

execute_fn(

12000

)

乙個裝飾器裝飾乙個函式

2 如果鍵不存在,則新增到字典中。請使用裝飾器來實現,順便複習下 args和 kwargs的用法 a defselect func def inner args,kwargs if len args 0 if kwargs key in kwargs data print 鍵存在 else func...

裝飾器如何裝飾乙個函式

裝飾器如何裝飾乙個函式?今天番茄加速就來講一下。printstar函式接收乙個函式f,返回值也是乙個函式,所以滿足裝飾器的結構要求,所以printstar是乙個裝飾器。def printstar f def g print 20 f print 20 return g printstar裝飾器實現f...

帶函式的裝飾器 多個裝飾器裝飾乙個函式

一 帶引數的裝飾器 開關 author administrator f true defouter f def wap fun ggdef inner args,kwargs iff print inner before ret fun args,kwargs gg print inner afte...