在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);
}
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类型例外)。
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文件。
a = 0 b = 1 c = 2 d = 33. 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 = 100OK,同样成功修改了全局变量(这个说法不准确,但姑且就这么叫吧)。
原文:http://blog.csdn.net/diaoxuesong/article/details/42552943