這篇文章主要介紹了python裝飾器使用實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
python裝飾器的作用就是在不想改變原函數代碼的情況下,增加新的功能.主要應用了python閉包的概念,現在用1個小例子說明
import timedef foo(): time.sleep(1) def bar(): time.sleep(2) def show_time(f): def inner(): start_time = time.time() f() end_time = time.time() print(end_time-start_time) return inner#show_time(f) is a decoration functionfoo = show_time(foo)bar = show_time(bar)foo()bar()
上面的代碼定義了兩個函數foo()和bar(). 通過裝飾器函數show_time(f),在其內部定義了另一個閉包函數inner(),再通過foo=show_time(foo),bar=show_time(bar)語句將foo()和bar()函數同裝飾器函數關聯起來,從而實現了不改變foo()和bar()函數代碼,增加打印程序執行時間的功能.程序的執行結果如下:
1.00113701822.00142788887
顯然,程序在沒有改變原函數的情況下,實現了調用原函數顯示程序運行時間的功能.
上面的小程序可以將調用裝飾器的語句改成@decoration的形式,效果是造價的,改變后的程序如下,其功能和上面的程序完全相同.
import time@show_time #foo = show_time(foo)def foo(): time.sleep(1) @show_time #bar = show_time(bar)def bar(): time.sleep(2) def show_time(f): def inner(): start_time = time.time() f() end_time = time.time() print(end_time-start_time) return inner#show_time(f) is a decoration functionfoo()bar()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網之家。
新聞熱點
疑難解答