Python NameError全局名称未定义 - 变量在Thread中找不到它的值

时间:2016-06-22 05:16:45

标签: python multithreading python-2.6

我的python代码中有一点令人震惊。我试图在我的类中调用一个线程类对象来显示一个加载栏,而我的实际函数获取值。我有2个类文件progress.py,它有加载代码和我的gmond_class.py,它有实际的函数来获取值。我很困惑错误全局变量'stop'没有在我的线程类文件中定义,当代码到达时,评估停止变量不等于True.can任何人请帮助我。 请检查我的代码类文件gmond_class文件。

protected

1 个答案:

答案 0 :(得分:2)

那是因为你实际上没有定义stop。只是说global stop没有这样做 - 它只是说应该在全局范围内查找stop而不是本地(无论如何)。

要实际定义stop,您必须为其指定一个值,例如stop = None。发生这种情况的唯一地方是KeyboardInterruptEOFError被捕获(作业stop = True)。

对属性引用的工作原理似乎也有些混淆。属性引用意味着在几个阶段中查找。例如,self.stop表示首先以正常方式查找self,一旦找到对象,就会在该对象内查找stop属性。现在self在这种情况下作为参数传递给函数,使self成为局部变量。全局/本地状态仅适用于此查找的第一步。