python中的global關鍵字用法

2021-10-03 02:13:55 字數 1618 閱讀 9617

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 解析名稱時首先檢查區域性作用域,然後由內...