教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Python中的命名空間是什么?

更新時間:2023年06月23日10時31分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  在Python中,命名空間(Namespace)是一個用于存儲變量名稱和其對應(yīng)對象的系統(tǒng),用于區(qū)分不同變量的作用范圍和可見性。它可以被看作是一個字典,其中變量名是字典中的鍵,對應(yīng)的對象是字典中的值。

  Python中的命名空間可以分為以下幾種類型:

  1.內(nèi)置命名空間(Built-in Namespace)

  這是Python解釋器內(nèi)置的命名空間,它包含了Python的內(nèi)置函數(shù)和異常等。這些名稱可以在任何地方直接使用,無需導(dǎo)入任何模塊。

  2.全局命名空間(Global Namespace)

  全局命名空間是指在模塊層級定義的命名空間,它在整個模塊中可見。模塊中的全局變量和函數(shù)都屬于全局命名空間。全局命名空間也可以被其他模塊訪問,通過導(dǎo)入模塊后使用模塊名.變量名或模塊名.函數(shù)名的方式進(jìn)行訪問。

  3.局部命名空間(Local Namespace)

  局部命名空間是指在函數(shù)、方法或類中定義的命名空間。它僅在所定義的函數(shù)、方法或類的作用范圍內(nèi)可見。每當(dāng)函數(shù)、方法或類被調(diào)用時,都會創(chuàng)建一個新的局部命名空間,用于存儲局部變量和參數(shù)。當(dāng)函數(shù)、方法或類執(zhí)行完畢后,局部命名空間將被銷毀。

  4.閉包命名空間(Closure Namespace)

  閉包命名空間是在嵌套函數(shù)中創(chuàng)建的命名空間。當(dāng)一個內(nèi)部函數(shù)引用了外部函數(shù)的變量時,內(nèi)部函數(shù)形成了一個閉包,并創(chuàng)建了一個閉包命名空間。閉包命名空間在內(nèi)部函數(shù)被調(diào)用時被創(chuàng)建,保存了外部函數(shù)的變量引用,以供內(nèi)部函數(shù)在外部函數(shù)執(zhí)行完畢后繼續(xù)訪問。

  此外,還有一些其他類型的命名空間,如類命名空間(Class Namespace)和實(shí)例命名空間(Instance Namespace),用于存儲類和實(shí)例相關(guān)的屬性和方法。

  在Python中,命名空間的查找順序遵循了一個稱為LEGB規(guī)則的順序:

  1.局部命名空間(Local)

  首先搜索當(dāng)前局部命名空間,即函數(shù)、方法或類中的命名空間。

  2.閉包命名空間(Enclosing)

  如果在當(dāng)前局部命名空間中找不到變量,Python會繼續(xù)搜索閉包命名空間,即包含當(dāng)前局部命名空間的外部函數(shù)的命名空間。

  3.全局命名空間(Global)

  如果在閉包命名空間中找不到變量,Python會搜索全局命名空間,即模塊級別的命名空間。

  4.內(nèi)置命名空間(Built-in)

  如果在全局命名空間中找不到變量,最后會搜索內(nèi)置命名空間,即Python解釋器的內(nèi)置函數(shù)和異常。

  通過了解和理解命名空間的概念,可以更好地組織和管理變量,避免命名沖突,同時也能更清晰地理解變量的作用范圍和可見性。

0 分享到:
和我們在線交談!