學了就忘,看到這個例子很好,記錄一下。
來源 蔡超老師課程
閉包
裝飾器(decorator)
裝飾器是閉包的一個經典應用。裝飾器(decorator)在 python 中用來擴展原函數的功能,目的是在不改變原來函數代碼的情況下,給函數增加新的功能。
假設我們的需求又變化啦,我們現在不統計函數的運行開始和結束時間了,改成統計函數的運行時長了,那麼我們只需要改 record_time 這個函數就好了,而我們的功能函數 sum 就無須再改了,這樣是不是方便了很多?
有了裝飾器,我們可以在不改變原有函數代碼的前提下,增加、改變原有函數的功能。這種方式也被稱作“切面編程”,實際上,裝飾器正是切面編程的最佳釋例。
語法糖
有了裝飾器,我們就可以做很多額外的工作,例如插入日誌、做事務處理等,在後續的章節中我也會介紹如何利用裝飾器給測試用例打標籤。