赋值前引用的局部变量,Python



我有一个关于错误局部变量的问题。。。在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知道您试图在给它任何值之前使用本地变量。

相关内容

  • 没有找到相关文章

最新更新