設計乙個裝飾器,作用於任何函式上,列印函式執行時間
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...