Python3 命名空間

python3 命名空間

python 使用命名空間記錄變量。python中的命名空間都是通過 字典(dict) 來實(shí)現(xiàn)的。

命名空間提供了在項(xiàng)目中避免名字沖突的一種方法。各個(gè)命名空間是獨(dú)立的,沒有任何關(guān)系的,所以一個(gè)命名空間中不能有重名,但不同的命名空間是可以重名而沒有任何影響。

我們舉一個(gè)計(jì)算機(jī)系統(tǒng)中的例子,一個(gè)文件夾(目錄)中可以包含多個(gè)文件夾,每個(gè)文件夾中不能有相同的文件名,但不同文件夾中的文件可以重名。

命名空間的種類

  • 內(nèi)置名稱(built-in names), python 語言內(nèi)置的名稱,比如函數(shù)名 abs、char 和異常名稱 baseexception、exception 等等。
  • 全局名稱(global names),模塊中定義的名稱,記錄了模塊的變量,包括函數(shù)、類、其它導(dǎo)入的模塊、模塊級(jí)的變量和常量。
  • 局部名稱(local names),函數(shù)中定義的名稱,記錄了函數(shù)的變量,包括函數(shù)的參數(shù)和局部定義的變量。(類中定義的也是)

命名空間查找順序

假設(shè)我們要使用變量 yapf,則 python 的查找順序?yàn)椋壕植康拿臻g去 -> 全局命名空間 -> 內(nèi)置命名空間。

如果找不到變量 yapf,它將放棄查找并引發(fā)一個(gè) nameerror 異常:

nameerror: name 'yapf' is not defined。

命名空間的生命周期

命名空間的生命周期取決于對(duì)象的作用域,如果對(duì)象執(zhí)行完成,則該命名空間的生命周期就結(jié)束。

因此,我們無法從外部命名空間訪問內(nèi)部命名空間的對(duì)象。

范例

# var1 是全局名稱
var1 = 5
def some_func():
 
    # var2 是局部名稱
    var2 = 6
    def some_inner_func():
 
        # var3 是內(nèi)嵌的局部名稱
        var3 = 7
相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频