如何解决Python - 在为变量赋值之前引用的局部变量应该覆盖范围之外的一个
此代码不起作用 (UnboundLocalError: local variable 'x' referenced before assignment
):
x = 5
def thing():
x = x + 1
thing()
这个可以(只将 x
更改为 i
):
x = 5
def thing():
i = x + 1
thing()
我预计第一个会创建一个名为 x
的新变量,其值为 6(保持外部变量不变),这就是第二个示例中的 i
。这里发生了什么?
似乎在作用域中第一次创建变量时,它会检查它是否存在于任何外部作用域中,如果已经找到则引发错误,如果已经找到则引发错误。>
现在,我的问题是,这样做的目的是什么?
解决方法
Python 不允许您使用相同的符号来引用两个不同的变量。要么 x
是 global
,在这种情况下,您必须在函数的开头声明 global x
(然后 x
的两次出现都指的是函数内部的全局变量) ;或者不是,在这种情况下,您在 x
中引用的 x + 1
尚未定义。
以一种奇怪的方式,您的推理是有道理的,至少在这个小玩具示例中,但是应该很容易看出您假设的语义对于具有许多变量的更大代码块的人类来说是如何难以理解的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。