命名空間(namespaces)
當我們啟動python直譯器的時候,它會自動開闢乙個built-in namespaces,裡面放所有的內建函式名,比如print()
,type()
之類
當我們載入模組的時候,會建立global namespaces,存放模組下的變數名
當我們呼叫乙個函式的時候會建立乙個local namespaces,存放這個函式裡面所有的變數名。值得一提的是,如果函式中還有函式,那麼這個子函式也會建立自己的namespaces
變數作用域(variable scope)
舉個例子
a = 1
def outer_function():
a = 2
def nested_function():
a = 3
print(f"i am in nested_function ")
nested_function()
print(f"i am in outer_function ")
outer_function()
print(f"i am not in outer_function ")
# i am in nested_function 3
# i am in outer_function 2
# i am not in outer_function 1
a = 1
def outer_function():
a = 2
def nested_function():
global a
a = 3
print(f"i am in nested_function ")
nested_function()
print(f"i am in outer_function ")
outer_function()
print(f"i am not in outer_function ")
# i am in nested_function 3
# i am in outer_function 2
# i am not in outer_function 3
a = 1
def outer_function():
a = 2
def nested_function():
nonlocal a
a = 3
print(f"i am in nested_function ")
nested_function()
print(f"i am in outer_function ")
outer_function()
print(f"i am not in outer_function ")
# i am in nested_function 3
# i am in outer_function 3
# i am not in outer_function 1
hive變數命名空間
hive變數命名空間有四個 hivevar,hiveconf,system,env。上圖來自 hive程式設計指南 hive cli啟動時可通過 define和 hivevar hiveconf來自定義變數。其中 define和 hivevar的作用是一樣的,都是在hivevar命名空間定義變數。h...
Python 命名空間
本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...
python 命名空間
作用域 第五章說過,將輸入字元作為命令放在作用域字典裡 作用域,每個函式都有乙個作用域,就是 字典,字典名字為函式名,鍵為變數,鍵值為變數對應的賦值。函式的作用域為區域性作用域 在函式內部訪問全域性變數,且只是讀取變數的值不重新繫結變數。這樣引用易出錯誤。慎重使用全域性變數 defcombine p...