第一个能运行,第二个运行报错,求大佬解释 ,感谢
原因
- 首先,python是有从近到远读取变量机制的,当局部变量没有查询到时,会去查询全局变量,这就是第一组语句能够运行成功的原因。
- 而当第二组语句中 写下
a=a+1
的时候,表达式等号左边的a定义了一个局部变量a,导致表达式等号右边的a+1在进行计算时,系统发现已经存在一个局部变量a,所以就会去获取这个局部变量a的值进行计算,但是这个a还并没有赋值,所以导致了报错发生。
解决
- 可以将
a=a+1
改为b=a+1
,这样就不会生成一个相同名称的局部变量a,系统就回去获取全局变量中的a来进行计算,运行成功
你34行的语句中的b已经超过了它本身的作用域
明白了 感谢,但是如果c要取到值的话要怎么操作呢
把你代码中的 c = b + 1 改成:c = test1() + 1就可以了
嗯嗯