裝飾器函式可以對乙個函式做包裝,使其擁有額外的能力,比如記錄乙個函式的執行時間。實際工作中不可能在每乙個函式中去計算執行時間,因為這樣的功能也許僅僅是在測試的時候需要。編寫乙個專門用於計算函式執行時間的裝飾器函式,在需要的時候使用。
#coding=utf-8
'''created on 2016-3-9
@author: kwsy
'''import time
from functools import wraps
def timefunc(func):
@wraps(func)
start = time.time()
result = func(*args,**kwargs)
end = time.time()
print func.__name__,end-start
return result
@timefunc
def test(n):
time.sleep(n)
if __name__ == '__main__':
test(2)
timefunc 函式接受 test(n) 做為引數,在timefunc內部,呼叫了test函式,為了保證接受任意引數,使用了*args和**kwargs作為引數。
在實際使用中,還可以這樣
def test(n):
time.sleep(n)
if __name__ == '__main__':
func = timefunc(test)
func(2)
python 函式式程式設計 高階函式 裝飾器
coding gb2312 coding utf 8 高階函式 import math def is sqr x y int math.sqrt x return x y y print filter is sqr,range 1,101 返回函式 作用 延遲執行 def calc prod lst...
python裝飾器 函式裝飾器,類裝飾器
只要實現此 模式,這個obj就叫乙個裝飾器 參考 函式裝飾器 例子 def decorator func def inner args,kwargs print before.res func args,kwargs print after.return res return inner decor...
python 裝飾器 函式裝飾器 類裝飾器
python函式裝飾器和類裝飾器筆記.usr bin env python coding utf 8 author ivan file decorators.py version from functools import wraps 裝飾器 目的是為了給函式新增附加功能 1.不帶引數裝飾器 此方式...