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

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

命名空間(Namespace)是從名稱到對象的映射。各個命名空間是獨立的,沒有任何關係,因此一個命名空間不能有重名,但不一樣的命名空間是能夠重名而沒有任何影響。app

咱們舉一個計算機系統中搞得例子,一個文件夾(目錄)中能夠包含多個文件夾,每一個文件夾不能有相同的文件名,但不一樣文件夾中的文件能夠重名。ide

 

 

 通常有三種命名空間:函數

  • 內置名稱(built-in names),python語言內置的名稱,好比函數名abs, char和異常名稱BaseException, Exception等等。
  • 全局名稱(global names),模塊中定義的名稱,記錄了模塊的變量,包括函數、類、其它導入的模塊、模塊級的變量和常量。
  • 局部名稱(local names),函數中定義的名稱,記錄了函數的變量,包括函數的參數和局部定義的變量。(類中定義的也是)

 

 

 命名空間查找順序:ui

假設咱們要使用變量runoob,則Python的查找順序爲:局部的命名空間->全局命名空間->內置命名空間spa

若是找不到變量runoob,它將放棄查找並引起一個NameError異常:對象

NameError: name 'runoob' is not defined.

命名空間的生命週期:blog

命名空間的生命週期取決於對象的做用域,若是對象執行完成,則該命名空間的生命週期就結束。生命週期

所以,咱們沒法從外部命名空間方位內部命名空間的對象。作用域

相關文章
相關標籤/搜索