python 命名空間

2022-08-22 04:33:09 字數 1465 閱讀 8818

python使用命名空間記錄變數。python中的命名空間就像是乙個dictkey是變數的名字,value是變數的值。

python中的某段**要訪問乙個變數x時,python會在所有的命名空間中尋找這個變數,查詢的順序為:

對於閉包來說,這裡有一點區別,如果在local namespace中找不到變數的話,還會去父函式的local namespace中找變數。

內建函式locals(), 返回當前函式(方法)的區域性命名空間

def func(a = 1):

b = 2

print(locals())

return a+b

func()

# 可以看出,locals返回的是個dict

內建函式globals(),返回當前module的命名空間

def func(a = 1):

b = 2

return a+b

func()

print(globals()) # globals()返回的也是個dict

locals()和globals()有乙個區別是,locals唯讀,globals可以寫

def func(a = 1):

b = 2

return a+b

func()

glos = globals()

glos['new_variable'] = 3

print(new_variable)

# 3 , 我們並沒有顯示定義new_variable這個變數,只是在globals中新增了這個key,在隨後的**中,

#就可以像訪問一般變數一樣來訪問。

def func(a = 1):

b = 2

locs = locals()

locs['c'] = 1

print(c)

func()

# nameerror: name 'c' is not defined

python中的module也是物件,所有的modules都有乙個內建的屬性__name__,模組的__name__屬性的值取決於如何使用這個模組,如果import module,那麼__name__屬性的值是模組的名字。如果直接執行這個模組的話,那麼__name__屬性的值就是預設值__main__

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 ...