国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python命名空間的本質和加載順序

2020-02-16 00:11:26
字體:
來源:轉載
供稿:網友

Python的命名空間是Python程序猿必須了解的內容,對Python命名空間的學習,將使我們在本質上掌握一些Python中的瑣碎的規則。

接下來我將分四部分揭示Python命名空間的本質:一、命名空間的定義;二、命名空間的查找順序;三、命名空間的生命周期;四、通過locals()和globals() BIF訪問命名空間

重點是第四部分,我們將在此部分觀察命名空間的內容。

一、命名空間

Python使用叫做命名空間的東西來記錄變量的軌跡。命名空間是一個 字典(dictionary) ,它的鍵就是變量名,它的值就是那些變量的值。

A namespace is a mapping from names to objects. Most namespaces are currently implemented as Python dictionaries。

 在一個 Python 程序中的任何一個地方,都存在幾個可用的命名空間。

     1、每個函數都有著自已的命名空間,叫做局部命名空間,它記錄了函數的變量,包括函數的參數和局部定義的變量。

     2、每個模塊擁有它自已的命名空間,叫做全局命名空間,它記錄了模塊的變量,包括函數、類、其它導入的模塊、模塊級的變量和常量。

     3、還有就是內置命名空間,任何模塊均可訪問它,它存放著內置的函數和異常。

名稱空間的加載順序

內置命名空間(程序運行前加載)-->全局命名空間(程序運行中:從上到下加載)-->局部命名空間(程序運行中:調用時才加載)

二、名稱空間的取值順序

在局部調用:局部命名空間-->全局命名空間-->內置命名空間

在全局調用:全局命名空間-->內置命名空間

綜上所述,在尋找變量時,從小范圍,一層一層到大范圍去找尋。

三、命名空間查找順序

當一行代碼要使用變量 x 的值時,Python 會到所有可用的名字空間去查找變量,按照如下順序:

     1、局部命名空間:特指當前函數或類的方法。如果函數定義了一個局部變量 x,或一個參數 x,Python 將使用它,然后停止搜索。

     2、全局命名空間:特指當前的模塊。如果模塊定義了一個名為 x 的變量,函數或類,Python 將使用它然后停止搜索。

     3、內置命名空間:對每個模塊都是全局的。作為最后的嘗試,Python 將假設 x 是內置函數或變量。

     4、如果 Python 在這些名字空間找不到 x,它將放棄查找并引發一個 NameError 異常,如,NameError: name 'aa' is not defined。

嵌套函數的情況:

     1、先在當前 (嵌套的或 lambda) 函數的命名空間中搜索

     2、然后是在父函數的命名空間中搜索

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宽甸| 邢台县| 镇江市| 渝中区| 沁水县| 邢台县| 白山市| 富平县| 博野县| 德庆县| 英吉沙县| 永平县| 手游| 东兰县| 轮台县| 绥化市| 峡江县| 宜黄县| 扶余县| 北碚区| 手游| 民县| 顺平县| 宝丰县| 德兴市| 沅江市| 迁西县| 新建县| 汨罗市| 雅江县| 白沙| 广饶县| 即墨市| 临湘市| 阳朔县| 潢川县| 波密县| 梨树县| 高州市| 砚山县| 垣曲县|