作用域#第五章說過,將輸入字元作為命令放在作用域字典裡
#作用域,每個函式都有乙個作用域,就是**字典,字典名字為函式名,鍵為變數,鍵值為變數對應的賦值。函式的作用域為區域性作用域
#在函式內部訪問全域性變數,且只是讀取變數的值不重新繫結變數。這樣引用易出錯誤。慎重使用全域性變數
defcombine(parameter
):printparameter
+external
#區域性變數
+全域性變數
external
='berry'#
全域性變數
combine
('shrub')#
區域性變數 結果
shrubberry
。結果表明在區域性作用中可以呼叫全域性變數
#函式中可讀取全域性變數;但是全域性變數的名字和區域性變數名字或者引數名字相同則不能訪問全域性,全域性變數被區域性變數遮蔽。
#若需要則用
globals
函式獲取全域性變數值,返回全域性變數的字典。(
locals
返回區域性變數的字典)
defcombine(parameter
):printparameter
+globals
()['parameter']parameter
='berry'#
全域性變數
,名字與函式引數相同
combine
('shrub')#shrubberry
#重新繫結全域性變數,在函式內部賦值給乙個變數,會使它變為區域性變數,除非將其申明為全域性變數
x=1
defchange_global():globalx
#申明為全域性變數
x=x
+1
change_global
()printx
# 2
Python 命名空間
本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...
python命名空間
區域性命名空間下def foo a a if name main foo 報錯資訊 unboundlocalerror local variable a referenced before assignment 全域性命名空間下if name main b b報錯資訊 nameerror name ...
python命名空間
變數是擁有匹配物件的名字 識別符號 命名空間是乙個包含了變數名稱們 鍵 和它們各自相應的物件們 值 的字典。乙個 python 表示式可以訪問區域性命名空間和全域性命名空間裡的變數。如果乙個區域性變數和乙個全域性變數重名,則區域性變數會覆蓋全域性變數。每個函式都有自己的命名空間。類的方法的作用域規則...