Python:帮助解决UnboundLocalError:赋值前引用的局部变量

标签 python multithreading

我的部分代码不断收到此错误。

Traceback (most recent call last):
File "./mang.py", line 1688, in <module>
files, tsize = logger()
File "./mang.py", line 1466, in logger
nl = sshfile(list, "nl")
UnboundLocalError: local variable 'sshfile' referenced before assignment

我没有把代码放上去,因为它在函数之间来回切换。我想知道是否有人能告诉我为什么 python 会吐出这个错误? sshfile 不是一个变量,它是一个类。

最佳答案

您可能还没有导入包含 sshfile 定义的文件,或者您需要用包名来限定类名。这取决于您如何导入它。

它来自什么包?在哪里定义的?


更新

对于阅读本文的任何其他人,在评论中进行讨论后发现问题是名称 sshfile 已在函数中进一步用作变量名,如下所示:

class sshfile:
    pass

def a():
    f = sshfile() # UnboundLocalError here
    sshfile = 0

a()

解决方案是不要使用隐藏您需要使用的类名的变量名。

关于Python:帮助解决UnboundLocalError:赋值前引用的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2256056/

相关文章:

c# - 在 C# 中并行读取具有一百万行的 csv 文件

python - Pandas 根据条件合并两行

python - 将时间戳从 tz ='UTC' 更改为 tz ='tzutc()'

java - 对可变对象的 AtomicReference 和可见性

Java 优化了读/写共享资源/内存位置而无需 Atomic API,例如原子整数

multithreading - 简单的多线程Haskell占用大量内存

具有字符串和第二类的 __new__ 和 __init__ 的 Python 多重继承

Python/Arduino : PySerial, Matplotlib,numpy;树莓派

python - 如何将 python 对象(如字典)分配给 pandas 列

multithreading - Java EE( Spring )多线程划分工作