Python中的全域性變數

2021-05-22 01:16:38 字數 1045 閱讀 8229

全域性變數不符合引數傳遞的精神,所以,平時我很少使用,除非定義常量。今天有同事問乙個關於全域性變數的問題,才發現其中原來還有門道。

程式大致是這樣的:

constant = 0

def modifyconstant() :

print constant

constant += 1

return

if __name__ == 『__main__』 :

modifyconstant()

print constant

執行結果如下:

unboundlocalerror: local variable 『constant』 referenced before assignment

看來,全域性變數在函式modifyconstant中邊成了區域性變數,似乎全域性變數沒有生效?

做點修改:

constant = 0

def modifyconstant() :

print constant

#constant += 1

return

if __name__ == 『__main__』 :

modifyconstant()

print constant

執行正常,看來函式內部是可以訪問全域性變數的。

所以,問題就在於,因為在函式內部修改了變數constant,python認為 constant是區域性變數,而print constant又在constant += 1之前,所以當然會發生這種錯誤。

那麼,應該如何在函式內部訪問並修改全域性變數呢?應該使用關鍵字global來修飾變數(有點像php):

constant = 0

def modifyconstant() :

global constant

print constant

constant += 1

return

if __name__ == 『__main__』 :

modifyconstant()

print constant

就這麼簡單!

python中全域性變數

在python中,全域性變數一般有兩種使用方式 第一種 是在乙個單獨的模組中定義好,然後在需要使用的全域性模組中將定義的全域性變數模組匯入。第二種 直接在當前的模組中定義好,然後直接在本模組中通過global宣告,然後使用 具體的方法如下所示 第一種 solr url def tt global s...

python 全域性變數

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

Python 全域性變數

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