python裝飾器初解
阿新 • • 發佈:2017-10-10
也有 基礎知識 了解 原本 研究 pytho 都是 很大的 開發流程
接觸python也有大半年的時間了,也進行了不少python相關的開發工作,但是對python的理解仍然是不夠深入的,目前的知識點還僅僅局限在常用的基礎知識上,對於比較深入的內容都沒有認真研究學習過,最近有個任務需要在原本的開發流程中加入日誌功能,掌握裝飾器技術對完成這次任務是很有幫助的。
因為在接觸python之前主要是在學習前端的知識的,對於javascript的知識了解的比較多,經過之前對裝飾器知識的查找學習後,知道python中的裝飾器跟javascript中的閉包有異曲同工之妙,都是在一個函數裏面包含另一個函數,但是這兩部分的使用上還是有很大的區別的。
裝飾器的基本語法格式為:
def deco(): def wrapper(): print ‘aa‘ return wrapper @deco def myfunc(): print ‘bb‘ myfunc()
在上述代碼中,對於裝飾器的使用直接使用了它的語法糖形式@,這樣寫的好處是顯而易見的,在後面調用的時候不用再重復寫函數名稱,而只是用@代替。在python中的一個公共認知是一切皆對象,因此函數也是對象。這裏的@符號可以理解為myfunc=deco(myfunc);myfunc()的簡寫。
使用裝飾器的好處是可以在被裝飾函數已經寫完的情況下直接使用@符號進行修飾,可以達到不用改變原有代碼的前提下增加新的功能。
python裝飾器初解