預備知識
裝飾器是一個函數。通過學習菜鳥教程來了解裝飾器的基本概念、作用和Python語法。
正文
本文介紹一個用來顯示函數執行時間的裝飾器。以下的代碼用來裝飾一個函數,使函數運行完畢後能顯示函數的運行時間,而且可以自定義提示信息。
def time_decorator_with_prompt(prompt_infor):
def time_decorator(f):
@wraps(f)
def decorated(*args, **kwargs):
start_time = time.time()
result = f(*args, **kwargs)
print(prompt_infor + ", Time =", time.time() - start_time)
return result
return decorated
return time_decorator
這段代碼的範式學習自菜鳥教程。
解釋
這段代碼最有意義的是給裝飾器加參數。通過外面套一個函數的殼(time_decorator_with_prompt
),使用多少參數都可以通過外面的殼傳入,然後在殼內部直接使用這些參數確定裝飾器,最後返回這個被確定的裝飾器。在外部確定參數,也是函數式編程一個很大的應用。
應用
以下是一個應用的例子:
@time_decorator_with_prompt(prompt_infor = "Load File Successfully")
def load_file():
# load some file
return something
load_file()
輸出信息:
Load File Successfully, Time = 0.01