python全域性變數

2021-08-18 11:15:53 字數 2215 閱讀 3403

python中global關鍵字主要作用是宣告變數的作用域。

在c語言中,由於變數一定是先宣告,後使用,所以我們可以清楚的知道,現在使用的變數是全域性還是區域性,比如:

[cpp]view plain

copy

inta = 5;  

void

test(

void

)    

void

test1(

void

)    

void

main(

void

)    

在python中,變數不需要先宣告,直接使用即可,那我們怎麼知道用的是區域性變數還是全域性變數呢?

首先:python使用的變數,在預設情況下一定是用區域性變數。

其次:python如果想使用作用域之外的全域性變數,則需要加global字首。

舉例說明,不用global的情況:

[python]view plain

copy

a = 

5def

test():  

a = 1

print

'in test func: a = %d'

% a  

test()  

print

'global a = %d'

% a  

程式執行結果為:

[python]view plain

copy

in test func: a = 

1global a = 5

可以看出,不加global的時候,在函式內部是改不了外面的全域性變數的(list型別例外)。

下面是使用global字首的情況:

[python]view plain

copy

a = 

5def

test():  

global

a  #此處宣告,告訴執行引擎:我要用全域性變數a,不要整成區域性的了!

a = 1

print

'in test func: a = %d'

% a  

test()  

print

'global a = %d'

% a  

執行結果:

[plain]view plain

copy

in test func: a = 1  

global a = 1  

可以看出,在函式內部成功的修改了全域性變數的數值。

事實上,網路上很多文章推崇另外的一種方法來使用全域性變數:使用單獨的global檔案。

方法如下:

1. 在同乙個資料夾下,新建2個檔案: myglobal.py test.py

2.  myglobal.py中放置全域性變數,內容示例如下:

[python]view plain

copy

a = 

0b = 1

c = 2

d = 3

3. test.py中是測試**,其中可以使用全域性變數

[python]view plain

copy

import

myglobal  

deftest():  

myglobal.a = 100

print

'myglobal a = %d'

% myglobal.a  

test()  

print

'after test, myglobal a = %d'

% myglobal.a  

執行test.py的結果如下:

[python]view plain

copy

myglobal a = 

0after test, myglobal a = 100

ok,同樣成功修改了全域性變數(這個說法不準確,但姑且就這麼叫吧)。

在實際使用中,兩種方法各有優勢,通常我們大多數時候只是用python寫小功能的指令碼,此時用global關鍵字就夠了。

如果寫比較大的功能應用時,用後一種方法可以使得

全域性變數的管理

更為方便。

python 全域性變數

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

Python 全域性變數

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

python 全域性變數

example1.全域性變數不修改值,只是引用時,在 都可以直接引用 a 1b 2,3 def func print a print b if name main func 輸出 a 1 b 2,3 example2.全域性變數修改值,a 1b 2,3 def func a 4b 0 1 print...