Python的命名空間和變數作用域

2022-06-14 18:36:06 字數 1549 閱讀 6138

命名空間(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...