當你在函式定義內宣告變數的時候,它們與函式外具有相同名稱的其他變數沒有任何關係,即變數名稱對於函式來說是 區域性 的。這稱為變數的 作用域 。所有變數的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。
例7.3 使用區域性變數
#!/usr/bin/python
# filename: func_local.py
def
func
(x):
print
'x is'
, x
x =
2
print
'changed local x to'
, x
x =
50
func(x)
print
'x is still'
, x
(原始檔:code/func_local.py)
$ python func_local.py
x is 50
changed local x to 2
x is still 50
在函式中,我們第一次使用x
的 值 的時候,python使用函式宣告的形參的值。
接下來,我們把值2
賦給x
。x
是函式的區域性變數。所以,當我們在函式內改變x
的值的時候,在主塊中定義的x
不受影響。
在最後乙個print
語句中,我們證明了主塊中的x
的值確實沒有受到影響。
如果你想要為乙個定義在函式外的變數賦值,那麼你就得告訴python這個變數名不是區域性的,而是 全域性 的。我們使用global
語句完成這一功能。沒有global
語句,是不可能為定義在函式外的變數賦值的。
你可以使用定義在函式外的變數的值(假設在函式內沒有同名的變數)。然而,我並不鼓勵你這樣做,並且你應該盡量避免這樣做,因為這使得程式的讀者會不清楚這個變數是在**定義的。使用global
語句可以清楚地表明變數是在外面的塊定義的。
例7.4 使用global語句
#!/usr/bin/python
# filename: func_global.py
def
func
():
global
x
print
'x is'
, x
x =
2
print
'changed local x to'
, x
x =
50
func()
print
'value of x is'
, x
(原始檔:code/func_global.py)
$ python func_global.py
x is 50
changed global x to 2
value of x is 2
global
語句被用來宣告x
是全域性的——因此,當我們在函式內把值賦給x
的時候,這個變化也反映在我們在主塊中使用x
的值的時候。
你可以使用同乙個global
語句指定多個全域性變數。例如global x, y, z
。
python區域性變數和全域性變數
name gongwei 要在函式裡修改全域性變數,需要用globle home earth china cq def change name home 地球 注意只有字串和單獨數值在區域性變數中修改全域性變數要用globle輔助,其他如列表 字典可以直接修改 global name name xu...
python 區域性變數和全域性變數
在python中全域性變數可以作用於所有域,而函式內部呼叫時會優先使用區域性變數,如果搜尋不到區域性變數就會在全域性中搜尋相同的變數 當然,以上並不意味著我們不能在函式內部使用全域性變數。python 的作用域規則是,變數的建立總是會建立乙個新的區域性變數但是變數的訪問 包括修改 在區域性作用域查詢...
python區域性變數和全域性變數
主要內容 1.命名空間,區域性命名空間,全域性命名空間,作 域,載入順序.2.函式的巢狀 3.gloabal,nonlocal關鍵字 1.命名空間 也就是全域性和區域性 命名空間分類 1 全域性命名空間,py檔案內,函式外宣告的變數 2 區域性命名空間 在函式裡面宣告的變數 3 內建命名空間 pyt...