python命名空間列印 Python 命名空間

2021-10-12 11:34:58 字數 1344 閱讀 6881

命名空間

在python直譯器開始執行行之後, 就會在記憶體中開闢乙個空間, 每當遇到乙個變數的時候, 就

把變數名和值之間的關係記錄下來, 但是當遇到函式定義的時候, 直譯器只是把函式名讀入內

存, 表示這個函式存在了了, 至於函式內部的變數和邏輯, 直譯器是不關心的.也就是說一開始

的時候函式只是載入進來, 僅此而已, 只有當函式被呼叫和訪問的時候, 直譯器才會根據函式

內部宣告的變數來進行行開闢變數的內部空間.隨著函式執行行完畢, 這些函式內部變數占用的空

間也會隨著函式執行行完畢而被清空.

我們給存放名字和值的關係的空間起乙個名字叫: 命名空間.我們的變數在儲存的時候就是儲存在這片空間中的.命名空間分類:

1.全域性命名空間 --> 我們直接在py檔案中, 函式外宣告的變數都屬於全域性命名空間

2.區域性命名空間 --> 在函式中宣告的變數會放在區域性命名空間

3.內建命名空間 --> 存放python直譯器為我們提供的名字, list, tuple, str, int這些都是內建命名空間

載入順序:

1.內建命名空間

2.全域性命名空間

3.區域性命名空間(函式被執⾏行行的時候)

取值順序:

1.區域性命名空間

2.全域性命名空間

3.內建命名空間

作用域:

1.全域性作用域: 全域性命名空間 + 內建命名空間

2.區域性作用域: 區域性命名空間

函式:globals,通過globals()函式來檢視全域性作用域中的內

locals,通過locals()函式來檢視區域性作用域中的變數和函式資訊

gloabal, nonlocal關鍵字

gloabal表⽰. 不再使⽤用區域性作⽤用域中的內容了了. ⽽而改⽤用全域性作⽤用域中的變數

1 a = 1

2 deffunc():3 globala4 print(a)

global

nonlocal表示在區域性作⽤用域中, 調⽤用⽗父級命名空間中的變數.

1 #nonlocal

2 a =03 defouter():4 a = 1

5 definner():6 a = 2

7 definner2():8 nonlocal a #宣告了乙個上面第一層區域性變數

9 a += 1 #不可變資料型別的修改

10 inner2()11 print('##a## :', a)12 inner()13 print('**a** :',a)14

15 outer()16 print('全域性 :',a)17 ###a## : 3

18 #**a** : 1

19 #全域性 : 0

nonlocal

python命名空間列印 python的命名空間

定義 名稱到物件的對映。命名空間是乙個字典的實現,鍵為變數名,值是變數對應的值。各個命名空間是對立沒有關係的,乙個命名空間中不能有重名,但是不同的命名空間可以重名且沒有任何影響。分類 python程式執行期間會有2個或3個活動的命名空間 函式呼叫時有3個,函式呼叫結束後2個 按照變數定義的位置,可以...

Python 命名空間

本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...

python 命名空間

作用域 第五章說過,將輸入字元作為命令放在作用域字典裡 作用域,每個函式都有乙個作用域,就是 字典,字典名字為函式名,鍵為變數,鍵值為變數對應的賦值。函式的作用域為區域性作用域 在函式內部訪問全域性變數,且只是讀取變數的值不重新繫結變數。這樣引用易出錯誤。慎重使用全域性變數 defcombine p...