Python的全局變量


應該盡量避免使用全局變量。不同的模塊都可以自由的訪問全局變量,可能會導致全局變量的不可預知性。對全局變量,如果程序員甲修改了_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

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM