我有一个关于错误局部变量的问题。。。在Python3中的赋值前引用。这个论坛已经讨论了这个错误的几个案例(看看这里(;但是他们没有回答我的问题。我目前的问题不是如何解决这个问题,而是理解为什么会出现这样的问题。
这是我的代码:
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
之后的代码部分。那么,为什么会出现这样的错误呢?
想知道为什么所有都有错误
问题是您的赋值创建了一个局部变量v
,该变量会遮蔽全局变量v
。这种情况发生在解析/加载时。这就是为什么python知道您试图在给它任何值之前使用本地变量。