應該盡量避免使用全局變量。不同的模塊都可以自由的訪問全局變量,可能會導致全局變量的不可預知性。對全局變量,如果程序員甲修改了_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.py a = 10; b = 3243; c = "hello,world"
在B中引用該變量
B.py import 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。py import A print (A.a,A.b,A.c)
輸出結果:
(10, 3243, 'hello,world')
並沒有因為在B中改變了全局變量的值而導致A模塊中的數值發生變化!
參考:http://blog.csdn.net/wolf199103/article/details/8123364