1. 程式人生 > 其它 >python3--到底什麼是Namespace(名稱空間)

python3--到底什麼是Namespace(名稱空間)

先看官方文件的一段話:A anmespace is a mapping from names to objects. Most namespaces are currently implemented as Python dictionaries.

名稱空間(Namespace)是從名稱到物件的對映。各個名稱空間是獨立的,沒有任何關係,所以一個名稱空間不能有重名,但不同的名稱空間是可以重名而沒有任何影響。

我們舉一個計算機系統中搞得例子,一個資料夾(目錄)中可以包含多個資料夾,每個資料夾不能有相同的檔名,但不同資料夾中的檔案可以重名。

一般有三種名稱空間:

  • 內建名稱(built-in names)
    ,python語言內建的名稱,比如函式名abs, char和異常名稱BaseException, Exception等等。
  • 全域性名稱(global names),模組中定義的名稱,記錄了模組的變數,包括函式、類、其它匯入的模組、模組級的變數和常量。
  • 區域性名稱(local names),函式中定義的名稱,記錄了函式的變數,包括函式的引數和區域性定義的變數。(類中定義的也是)

名稱空間查詢順序:

假設我們要使用變數runoob,則Python的查詢順序為:區域性的名稱空間->全域性名稱空間->內建名稱空間

如果找不到變數runoob,它將放棄查詢並引發一個NameError異常:

NameError: name 'runoob' is not defined.

名稱空間的生命週期:

名稱空間的生命週期取決於物件的作用域,如果物件執行完成,則該名稱空間的生命週期就結束。

因此,我們無法從外部名稱空間方位內部名稱空間的物件。

原文連線:https://www.runoob.com/python3/python3-namespace-scope.html