从父函数中赋值给变量:“在赋值之前引用了局部变量”
- 论坛
- 从父函数中赋值给变量:“在赋值之前引用了局部变量”
18 浏览
从父函数中赋值给变量:“在赋值之前引用了局部变量”
对于以下Python 2.7代码:
#!/usr/bin/python def func_a(): print "func_a" c = 0 def func_b(): c += 3 print "func_b", c def func_c(): print "func_c", c print "c", c func_b() c += 2 func_c() c += 2 func_b() c += 2 func_c() print "end" func_a()
我得到以下错误:
File "./a.py", line 9, in func_b c += 3 UnboundLocalError: local variable 'c' referenced before assignment
但是当我注释掉`func_b`中的`c += 3`这一行后,我得到以下输出:
func_a c 0 func_b 0 func_c 2 func_b 4 func_c 6 end
在`func_b`的`+=`和`func_c`的`=`两种情况下,不是都访问了`c`吗?为什么其中一个会报错而另一个不会?
我没有将`c`设为全局变量并在`func_b`中声明`global c`的选择。无论如何,重点不是让`func_b`中的`c`增加,而是为什么对于访问局部或全局变量的两个函数,一个会报错而另一个不会。