您当前的位置: 首页 >  Python

顺其自然~

暂无认证

  • 4浏览

    0关注

    1317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python基础 - global关键字及全局变量的用法

顺其自然~ 发布时间:2022-02-28 10:35:15 ,浏览量:4

在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关键字就够了。

如果写比较大的功能应用时,用后一种方法可以使得 全局变量的管理更为方便。

关注
打赏
1662339380
查看更多评论
立即登录/注册

微信扫码登录

0.0567s