python中全局变量一般没有缩进_python中全局变量和局部变量问题,有没有大神给解释一下...

问题:

a = 10

def func():

a += 1

print(a)

func()

print(a)

UnboundLocalError: local variable 'a' referenced before assignment

按照规则,函数内部不能修改全局变量,那为什么a += 1 不能看成,全局a传入函数内部之后,只是在函数内部的一个局部变量,就像例一和例二一样,单纯访问a,并把a + 1 赋值给函数内部的另一个a, 只在函数内部运算,而不改变全局变量,这似乎并不违背开头的规则,运算结果函数内的a = 11, 外部的a = 10.有没有大神给解释一下

例一:

a = 10

print("1", id(a))

def func():

a = 10

print("2", id(a))

a += 1

print(a)

print("3", id(a))

func()

print(a)

print("4", id(a))

结果

1 1629118976

2 1629118976

11

3 1629119008

10

4 1629118976

例二:

a = 10

print("1", id(a))

def func():

b = a + 1

print("2", id(b))

b += 1

print("3", id(b))

func()

print(a)

print("4", id(a))

例三:

a = 10

print("1", id(a))

def func():

global a

print("2", id(a))

a += 1

print("3", id(a))

func()

print(a)

print("4", id(a))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值