python中對變數作用域的設定相對來說是比較友好的,在理解上也符合人類思考習慣。但是如果在寫一些複雜的程式時,不可避免的要更涉及到作用域的改變。要實現這一點,乙個非常重要的關鍵字:global
就派上用場了。下面總結一下global
關鍵字的用法。
首先來看最簡單的一種例子:
var =
1def
func()
:print
(var)
func(
)# 1
執行上面的指令碼,那麼會列印1
。這說明,在函式外部定義的變數,在函式內是可以直接引用而無需宣告的。也就是說,在上面的例子中,var
變數是全域性的。
嘗試執行下面的**:
var =
1def
func()
: var +=
1print
(var)
func(
)# unboundlocalerror: local variable 'var' referenced before assignment
我們的意圖是很明顯的:把var
變數加1後列印它的值。然而在執行時會發生以下錯誤:
unboundlocalerror: local variable 『var』 referenced before assignment其含義也非常直觀:區域性變數
var
在宣告前被引用了。也就是說:對於函式外定義的全域性變數var
,如果不加處理,在函式內我們只能對該變數執行「讀」操作,而無法執行「寫」操作。
為了能「寫」,這時候需要用到global
關鍵字了:
var =
1def
func()
:global var
print
(var)
var +=
1print
(var)
func(
)# 1
# 2print
(var)
# 2
可以看出,在執行var += 1
之前,首先用global
關鍵字對var
進行了宣告,之後,var
變數在func
內部便是既可讀又可寫的了。
在上述**最後,通過列印外部的var
變數的值,可以發現,函式內部的修改操作影響了外部變數的值。
通過下面的例子,可以更好的理解這一點:
var =
1def
func1()
:global var
var +=
1print
(var)
deffunc2()
:global var
var +=
1print
(var)
func1(
)# 2
func2(
)# 3
python 中global的用法
python中定義函式時,若想在函式內部對函式外的變數進行操作,就需要在函式內部宣告其為global。例子1x 1 def func x 2 func print x 輸出 1 此時沒有使用global關鍵字,無法對全域性變數num進行修改 在func函式中並未在x前面加global,所以func函...
python中的global 學習記錄
以往寫python 也沒有用到過這個關鍵字。今天小接觸了一下,把學習到東西分享給大家。看一下下面這一段 num 9 def test2 global num print num num 0 test2 print num 執行結果 函式內,使用了global關鍵字宣告了變數num,注意,這個num因...
Python中global與nonlocal 宣告
如下 a 10 def foo a 100 執行foo 結果 a 還是10 函式中對變數的賦值,變數始終繫結到該函式的區域性命名空間,使用global 語句可以改變這種行為。a 10 def foo global a a 100 a 10 foo a 100 解析名稱時首先檢查區域性作用域,然後由內...