Python学习笔记(一):全局变量与局部变量

函数里有重复变量名的三种情况

一、重新定义了变量

代码:

a = 100

def test():
    a = 200
    print('Inside: ',a)

test()
print('Outside: ',a)

输出:

Inside:  200
Outside:  100

可以看到,外部有一个变量a,但函数内重新定义了一个新a,这两个a并不是同一个变量。函数内使用的是其自己定义的局部变量,不影响全局变量。

二、未重新定义直接操作

代码:

a = 100

def test():
    a = a + 1
    print('Inside: ',a)

test()
print('Outside: ',a)

输出:

UnboundLocalError: local variable 'a' referenced before assignment

直接报错了,此时函数内对a进行运算但未重新定义,test函数仍将其视为局部变量,所以会报“局部变量“a”在赋值前被引用”。但如果把第一句话删除:

a = 100

def test():
    print('Inside: ',a)

test()
print('Outside: ',a)

此时输出:

Inside:  100
Outside:  100

此时test未对a进行操作,所以print了全局变量a

三、使用global

代码:

a = 100

def test():
    global a
    a = a+1
    print('Inside: ',a)

test()
print('Outside: ',a)

输出:

Inside:  101
Outside:  101

利用global告诉函数我要用的是全局变量。

总结

如果要用同名局部变量,需要先重新定义赋值。
如果要用全局变量,需要用global申明一下。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值