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

全國(guó)咨詢/投訴熱線:400-618-4000

Python中的命名空間是什么?

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

好口碑IT培訓(xùn)

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

  Python中的命名空間可以分為以下幾種類(lèi)型:

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

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

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

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

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

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

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

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

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

  在Python中,命名空間的查找順序遵循了一個(gè)稱為L(zhǎng)EGB規(guī)則的順序:

  1.局部命名空間(Local)

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

  2.閉包命名空間(Enclosing)

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

  3.全局命名空間(Global)

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

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

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

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

0 分享到:
和我們?cè)诰€交談!