我有一个名为Y_VAL的全局变量,它被初始化为值2.
然后我有一个函数,称为f()(为了简洁),它使用Y_VAL.
def f():
y = Y_VAL
Y_VAL += 2
Run Code Online (Sandbox Code Playgroud)
但是,在尝试运行我的代码时,python会给出错误消息:
UnboundLocalError: local variable 'Y_VAL' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
如果我删除最后一行Y_VAL += 2它工作正常.
为什么python认为Y_VAL是局部变量?
Mar*_*off 14
你错过global Y_VAL了函数内部的一行.
当Y_VAL在赋值的右侧发生时,没有问题,因为首先搜索局部范围,然后搜索全局范围.但是,在左侧,您只能在显式声明时指定为全局方式global Y_VAL.
来自文档:
没有全局变量就不可能分配给全局变量,尽管自由变量可以引用全局变量而不被声明为全局变量.
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |