Python 全域性變數與global關鍵字

2021-08-04 07:50:15 字數 1160 閱讀 2039

​ 在python的變數使用中,經常會遇到這樣的錯誤:

local variable 'a' referenced before assignment
它的意思是:區域性變數「a」在賦值前就被引用了。

​ 比如執行下面的**就會出現這樣的問題:

a =

3def

fuc():

print

(a) a = a +

1fuc(

)

​ 但是如果把 a = a + 1 這一句刪除又不會出現上述問題了

a =

3def

fuc():

print

(a)fuc(

)

​ 原來,在python中,a=3 定義了全域性變數a,作用域從定義處到**結束,在 a=3 以下的函式中是可以引用全域性變數a的,但如果要修改函式中與全域性變數同名的變數,則函式中的該變數就會變成區域性變數,在修改之前對該變數的引用自然會出現未分配或未定義的錯誤了。

​ 如果確定要引用並修改全域性變數必須加上global關鍵字

a =

3def

fuc():

global a

print

(a) a=a+

1fuc(

)

​ 注意要領:哪個函式需要修改全域性變數,在函式中宣告一下即可。

​ 但在 if _name_ == 「main」:下,全域性變數是一直保持的

a =

3def

fuc():

global a

print

(a)# 1

a = a +

1if __name__ ==

"__main__"

:print

(a)# 2

a = a +

1 fuc(

)print

(a)# 3

​ 輸出如下(python3環境下):

3

45

三個print執行的順序為:2, 1, 3 。

人生苦短,我用python~

全域性變數global與超全域性變數 GLOBALS

出錯行 mysqli query link,select from sys calendar where id id link為連線資料庫,此處為空。解決方法 link不能從global獲取,改為 globals link mysqli query globals link select from ...

python 全域性變數

應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...

Python 全域性變數

應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...