Python之路-裝飾器
一.裝飾器前置知識要點
1.名稱空間
存放名字與變量綁定關系的地方
名稱空間的分類:
內置名稱空間:Python解釋器啟動時,存放自帶的名字的地方。(比如內置函數)
全局名稱空間:在執行文件時,文件級別名字存放的地方
局部名稱空間:在執行文件過程中,如果調用函數,用來存放函數內定名稱的地方,調用時生效,調用結束後失效
加載順序:內置--------》全局----------》局部
查找順序:局部--------》全局----------》內置
2.作用域
作用域:作用的範圍
(1).全局作用域(globals())
全局存活,全局有效
(2).局部作用域(locals())
臨時存活,局部有效
註意點:1.作用域關系,函數定義時已經確定,與函數調用位置無關,在調用函數是回到原來定義函數
的位置去找作用域關系。
3.閉包函數
定義:定義在內部的函數,包含對外部作用域的引用,而不是對全局作用域的引用,該函數就是閉包函數
二.裝飾器
裝飾器目的:遵循原則的前提下,為其他函數添加新功能
裝飾器遵循的原則:1.不修改被裝飾對象的源代碼 2.不修改被調用對象的調用方式
無參裝飾器例:
有參函數例:
Python之路-裝飾器