曾經有這麼一個需求,想要將程序中跑的整個process友好地顯示出來,這樣子後來者在看log的時候,就可以很清楚地知道程序source code中function的調用邏輯,方便理解。在接觸到裝飾器以前,覺得想要達到這樣的目的,就須要在每一個function的開始和結束的部分加上相應的code,如今裝飾器幫忙解決了這個問題。
#裝飾器有許多方法,但最簡單和最容易理解的方法是編寫一個函數,返回封裝原始函數調用的一個子函數 #此處,原始函數爲func,子函數爲result,最終的裝飾器就是decorator def decorator(func): def result(*args, **dic): print "Function --- %s is start" %func.__name__ res = func(*args, **dic) print "Function --- %s is end" %func.__name__ return res return result @decorator def test(): print "This is test" test() ######## 輸出結果 ######## Function --- test is start This is test Function --- test is end