什麼是命名空間
命名空間是一個系統,它為Python中的每個對象提供唯一的名稱。對象可以是變數或方法。Python本身以Python字典的形式維護命名空間。讓我們來看一個例子,計算機中的目錄文件系統結構。不用說,一個人可以擁有多個目錄,每個目錄中都有一個具有相同名稱的文件。但是,人們可以通過指定文件的絕對路徑來定向文件。
實時示例,命名空間的作用就像一個姓氏。有人可能在課堂上找不到一個「愛麗絲」可能會有多個「愛麗絲」,但當你特別要求「愛麗絲李」或「愛麗絲克拉克」(帶姓氏)時,只會有一個(時間不是』)想到多名學生的名字和姓氏都是一樣的)。
在類似的路線上,Python解釋器理解在代碼中試圖指向的確切方法或變數,具體取決於命名空間。因此,單詞本身的劃分提供了更多的信息。它的名稱(表示名稱,唯一標識符)+ 空格(表示與範圍相關的內容)。這裡,名稱可能是任何Python方法或變數,空間取決於嘗試訪問變數或方法的位置。
命名空間的類型
當Python解釋器完全沒有和用戶定義的模塊,方法,類等運行時,一些函數如print(),id()總是存在,這些函數是在命名空間中構建的。當用戶創建模塊時,將創建全局命名空間,稍後創建本地函數將創建本地命名空間。在內置的命名空間包含全局命名空間和全局命名空間包含局部命名空間。
命名空間的生命週期
命名空間的生命週期取決於對象的範圍,如果對象的範圍結束,則該命名空間的生命週期結束。因此,無法從外部命名空間訪問內部命名空間的對象。
# var1 is in the global namespace
var1 = 5
def some_func():
# var2 is in the local namespace
var2 = 6
def some_inner_func():
# var3 is in the nested local
# namespace
var3 = 7
如下圖所示,相同的對象名稱可以存在於多個名稱空間中,因為同名的名稱由其名稱空間維護。