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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM