Python: 解决UnboundLocalError:局部变量在赋值前被引用

2 投票
1 回答
7228 浏览
提问于 2025-04-15 19:13

我在我的代码中总是遇到这个错误。

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 不是一个变量,它是一个类。

1 个回答

1

你可能没有导入包含sshfile定义的文件,或者你需要在类名之前加上包名。这要看你是怎么导入的。

这个类是来自哪个包的?它在哪里定义的?


更新

给其他阅读这个内容的人,经过评论中的讨论,发现问题是因为在函数的后面部分,sshfile被当作了一个变量名使用,像这样:

class sshfile:
    pass

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

a()

解决办法是不要使用一个变量名去覆盖你需要使用的类名。

撰写回答