【发布时间】:2021-03-13 16:33:17
【问题描述】:
我对 Python3 中的错误 local variable ... referenced before assignment 有疑问。这个错误的几个案例已经在这个论坛中讨论过(看here);但是他们没有解决我的问题。我目前的问题是不是如何解决这个问题,而是要了解为什么会出现这样的问题。
这是我的代码:
class Test:
def __init__(self,n):
if n > 0:
self.index = n
self.check = v[0]
else:
self.index = n+5
self.check = v[1]
v = [18,12]
v = [90,43]
g = Test(18)
问题的出现只是因为v=[18,12] 分配。如果它被擦除,则不会有任何错误。但是,我的问题是 18 > 0,因此必须忽略 else 之后的代码部分。那么,为什么会出现这样的错误呢?
【问题讨论】:
-
你能修复问题中代码的格式吗?最后两行是否在课堂内?
-
@RocketHazmat 不,他们不是在课堂上。我现在将编辑它。谢谢
-
另外,
v = [90,43]应该是什么?您是否尝试将其放在__init__之前,然后改为引用self.v? -
通过将
v=[90,43]放在__init__之前,问题并未解决。然而;正如我所说,目前我不想知道如何解决这个问题,但想知道为什么会出现错误。 -
@RocketHazmat:不,
__init__确实知道。这就是全局变量在 python 中的工作方式。
标签: python-3.x function global-variables