當一行**要使用變數 x 的值時,python 會到所有可用的名字空間去查詢變數,按照如下順序:
1、區域性命名空間:特指當前函式或類的方法。如果函式定義了乙個區域性變數 x,或乙個引數 x,python 將使用它,然後停止搜尋。
2、全域性命名空間:特指當前的模組。如果模組定義了乙個名為 x 的變數,函式或類,python 將使用它然後停止搜尋。
3、內建命名空間:對每個模組都是全域性的。作為最後的嘗試,python 將假設 x 是內建函式或變數。
4、如果 python 在這些名字空間找不到 x,它將放棄查詢並引發乙個 nameerror 異常,如,nameerror: name 『aa』 is not defined。
文章部分內容源於網路,聯絡侵刪*
Python 命名空間
本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...
python 命名空間
作用域 第五章說過,將輸入字元作為命令放在作用域字典裡 作用域,每個函式都有乙個作用域,就是 字典,字典名字為函式名,鍵為變數,鍵值為變數對應的賦值。函式的作用域為區域性作用域 在函式內部訪問全域性變數,且只是讀取變數的值不重新繫結變數。這樣引用易出錯誤。慎重使用全域性變數 defcombine p...
python命名空間
區域性命名空間下def foo a a if name main foo 報錯資訊 unboundlocalerror local variable a referenced before assignment 全域性命名空間下if name main b b報錯資訊 nameerror name ...