1. 程式人生 > >Python之路-裝飾器

Python之路-裝飾器

style 執行 其他 臨時 image 而不是 globals 定義 裝飾

一.裝飾器前置知識要點

1.名稱空間

存放名字與變量綁定關系的地方

名稱空間的分類:

內置名稱空間:Python解釋器啟動時,存放自帶的名字的地方。(比如內置函數)

全局名稱空間:在執行文件時,文件級別名字存放的地方

局部名稱空間:在執行文件過程中,如果調用函數,用來存放函數內定名稱的地方,調用時生效,調用結束後失效

加載順序:內置--------》全局----------》局部

查找順序:局部--------》全局----------》內置

2.作用域

作用域:作用的範圍

(1).全局作用域(globals())

全局存活,全局有效

(2).局部作用域(locals())

臨時存活,局部有效

註意點:1.作用域關系,函數定義時已經確定,與函數調用位置無關,在調用函數是回到原來定義函數

的位置去找作用域關系。

3.閉包函數

定義:定義在內部的函數,包含對外部作用域的引用,而不是對全局作用域的引用,該函數就是閉包函數

技術分享

二.裝飾器

裝飾器目的:遵循原則的前提下,為其他函數添加新功能

裝飾器遵循的原則:1.不修改被裝飾對象的源代碼 2.不修改被調用對象的調用方式

無參裝飾器例:

技術分享

有參函數例:

技術分享

Python之路-裝飾器