代码及报错如下

在这里插入图片描述

解决

很多人都非常困惑,为什么在test3中可以直接输出a,但是在test3中,使用a+=1的时候,就直接报错呢?

首先,我们需要明确一个概念,就是全局变量与局部变量。如下图,大家觉得打印的a会是1还是3
在这里插入图片描述

答案是1,因为定义在test3外部的a是全局变量,而定义在test3内部的a是局部变量。此时,外面这个a与里面这个a没有任何关系。只不过是名字一样而已。

其次,我们需要明确在函数内部是可以直接访问到全局变量的,所以上图中test1是可以直接输出a,b的。但是如果是直接在test2中实现a+=1时,其实也就演变为a=a+1,此时,在代码右边的a仍然是可以访问全局变量的,但是代码左边的a却会认为在定义局部变量,而局部变量没有事先定义。所以报错。

那解决方法有两种,一种是声明test2内部的变量为全局变量
在这里插入图片描述
另一种是在test2里面先定义局部变量
在这里插入图片描述
就OK啦~

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐