Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 赋值前引用的局部变量,Python_Python 3.x_Function_Global Variables - Fatal编程技术网

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

Python 3.x 赋值前引用的局部变量,Python,python-3.x,function,global-variables,Python 3.x,Function,Global Variables,我有一个关于误差局部变量的问题。。。在Python3中作业前引用。本论坛讨论了几个此类错误案例(请看);但是他们没有回答我的问题。我现在的问题不是如何解决这个问题,而是理解为什么会有这样的问题 这是我的密码: class Test: def __init__(self,n): if n > 0: self.index = n self.check = v[0] else: sel

我有一个关于误差局部变量的问题。。。在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知道您在给局部变量赋值之前尝试使用它

想知道为什么会有错误吗


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

您能修复问题中代码的格式吗?最后两行是否在类内?@RocketHazmat不,它们不在类内。我现在就编辑它。谢谢,
v=[90,43]
应该是什么?您是否尝试将其放在
\uuuuu init\uuuuu
之前,然后引用
self.v
?通过将
v=[90,43]
放在
\uuuu init\uuu
之前,问题没有得到解决。然而;正如我所说,目前我不想知道如何解决这个问题,但想知道为什么会出现错误。@RocketHazmat:nah,
\uuu init\uuu
确实知道。这就是全局变量在python中的工作方式。您能修复问题中代码的格式吗?最后两行是否在类内?@RocketHazmat不,它们不在类内。我现在就编辑它。谢谢,
v=[90,43]
应该是什么?您是否尝试将其放在
\uuuuu init\uuuuu
之前,然后引用
self.v
?通过将
v=[90,43]
放在
\uuuu init\uuu
之前,问题没有得到解决。然而;正如我所说,目前我不想知道如何解决这个问题,但想知道为什么会出现错误。@RocketHazmat:nah,
\uuu init\uuu
确实知道。这就是全局变量在python中的工作方式。