python函数中的全局变量访问修改问题

gadflycq 2023.5.24

python中函数内部的变量和局部变量有着与C语言完全不一样的处理做法。
1、在函数内部可以访问全局变量,可以读取值,可以输出显示,但不允许修改。
2、即便函数内部对全局变量进行赋值操作,那也会被python当做是一个新的与全局变量同名的局部变量。赋值操作仅限于函数内部。在函数外部的全局变量值并不会被改变。
3、如果在函数内部对全局变量进行自增自减之类的修改,程序直接会报错,无法执行。
4、只有当在函数内部用global关键字显示的声明该变量是全局变量,才可以在函数内部对该全局变量进行正确的自增自减等修改操作。
以下是4个测试程序及输出结果说明。
###########测试程序1###############
a=1
def f():
print(a) #在函数内部访问全局变量,会得到正确的值,将输出1

f()

###########测试程序2###############
a=1
def f():
a=2 #在函数内部赋值全局变量,会新建一个同名局部变量,并不会真正修改全局变量的值
print(a) #输出2

f()
print(a) #还是会输出1。函数内部的a赋值不会影响到全局变量的值。

###########测试程序3###############
a = 1
def f():
a=a+1 #程序会报错,无法执行。不允许在函数内部对全局变量进行修改。
print(a)

f()

###########测试程序4###############
a = 1
def f():
global a #显示的声明a为外部全局变量
a=a+1 #此时程序会正确执行
print(a) #输出2

f()
print(a) #输出在函数内部修改的值2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值