應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了_a的值,程式設計師乙同時也要使用_a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。
全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域性變數。同樣,全域性變數降低了**的可讀性,閱讀者可能並不知道呼叫的某個變數是全域性變數。
但是某些時候,全域性變數能夠解決區域性變數所難以解決的問題。事物要一分為二。
python裡面全域性變數有兩種靈活的用法:
1 宣告法
在檔案開頭宣告全域性變數variable,
在具體函式中使用該變數時,需要事先宣告 global variable,否則系統將該變數視為區域性變數。
constant = 0 (將全域性變數大寫便於識別)
def modifyconstant() :
global constant
print constant
constant += 1
return
if __name__ == '__main__' :
modifyconstant()
print constant
2 模組法
將需要定義的全域性變數儲存在乙個模組中,這樣,每次引用的時候,就從這個模組中取出來。這樣的好處是突破了函式的限制,同時,儲存和全域性變數的原始值
例如,我們將全域性變數定義在a.py中:
a.pya = 10;
b = 3243;
c = "hello,world"
在b中引用該變數
b.pyimport a
print(a.a,a.b,a.c);
a.a = 200
a.c = "change value"
print(a.a,a.b,a.c);
輸出結果為:
(10, 3243, 'hello,world')
(200, 3243, 'change value')
函式內改變了全域性變數的數值
c。pyimport a
print (a.a,a.b,a.c)
輸出結果:
(10, 3243, 'hello,world')
並沒有因為在b中改變了全域性變數的值而導致a模組中的數值發生變化!
參考:
python 全域性變數
應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...
Python 全域性變數
應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...
python全域性變數
python中global關鍵字主要作用是宣告變數的作用域。在c語言中,由於變數一定是先宣告,後使用,所以我們可以清楚的知道,現在使用的變數是全域性還是區域性,比如 cpp view plain copy inta 5 void test void void test1 void void main...