Python中global關鍵字主要作用是聲明變量的作用域。
在C語言中,由於變量一定是先聲明,後使用,所以我們可以清楚的知道,現在使用的變量是全局還是局部,比如:
int a = 5;
void test(void)
{
a = 1; // 沒有先聲明,所以用的是全局的變量a
}
void test1(void)
{
int a;
a = 2; // 前面聲明了,所以用的是局部變量a,對其所做的修改不會影響全局變量a
}
void main(void)
{
printf("before: a = %d\n", a);
test();
printf("after test: a = %d\n", a);
test1();
printf("after test1: a = %d\n", a);
}
在python中,變量不需要先聲明,直接使用即可,那我們怎麼知道用的是局部變量還是全局變量呢?
首先:python使用的變量,在默認情況下一定是用局部變量。
其次:python如果想使用作用域之外的全局變量,則需要加global前綴。
舉例說明,不用global的情況:
a = 5
def test():
a = 1
print 'In test func: a = %d' % a
test()
print 'Global a = %d' % a
程序執行結果為:
In test func: a = 1
Global a = 5
可以看出,不加global的時候,在函數內部是改不了外面的全局變量的(list類型例外)。
下面是使用global前綴的情況:
a = 5
def test():
global a
#此處聲明,告訴執行引擎:我要用全局變量a,不要整成局部的了!
a = 1
print 'In test func: a = %d' % a
test()
print 'Global a = %d' % a
執行結果:
In test func: a = 1
Global a = 1
可以看出,在函數內部成功的修改了全局變量的數值。
事實上,網絡上很多文章推崇另外的一種方法來使用全局變量:使用單獨的global文件。
方法如下:
1. 在同一個文件夾下,新建2個文件: myglobal.py test.py
2. myglobal.py中放置全局變量,內容示例如下:
a = 0
b = 1
c = 2
d = 3
3. test.py中是測試代碼,其中可以使用全局變量
import myglobal
def test():
myglobal.a = 100
print 'myglobal a = %d' % myglobal.a
test()
print 'after test, myglobal a = %d' % myglobal.a
執行test.py的結果如下:
myglobal a = 0
after test, myglobal a = 100
OK,同樣成功修改了全局變量(這個說法不准確,但姑且就這麼叫吧)。
在實際使用中,兩種方法各有優勢,通常我們大多數時候只是用python寫小功能的腳本,此時用global關鍵字就夠了。
如果寫比較大的功能應用時,用後一種方法可以使得全局變量的管理更為方便。
--------------------------------------分割線 --------------------------------------
CentOS上源碼安裝Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm
《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm
《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm
Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm
在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm
Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm
Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡