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
'in test func: a = %d'
% a
test()
'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
'in test func: a = %d'
% a
test()
'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
'myglobal a = %d'
% myglobal.a
test()
'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...