【问题标题】:local variable referenced before assignment, Python赋值前引用的局部变量,Python
【发布时间】: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


【解决方案1】:

想知道为什么会出现错误

问题是你的赋值创建了一个局部变量v,它会影响你的全局变量v。这发生在解析/加载时。这就是为什么 python 知道你在给它任何值之前尝试使用局部变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多