Python中的Unbound Local错误我无法动摇!

时间:2011-05-24 13:56:22

标签: python debugging local

http://pastie.org/1966237

我一直收到一个未绑定的本地错误。我不明白它为什么会发生,如果程序运行正常,它应该直接进入main函数中print_et_list函数的第二个赋值,循环自身而不实际循环。该程序仅在hey_user函数中使用sys.exit()退出。

我将整个程序包含在上下文中,不会太长。如果您想查看我在程序中使用的文本文件,请告诉我,但我确信它不太可能是问题的根源。

4 个答案:

答案 0 :(得分:3)

在设置局部变量之前读取局部变量的值时会发生UnboundLocalError。为什么得分是局部变量而不是全局变量?因为你在函数中设置它。考虑这两个功能:

def foo():
    print a

VS

def bar():
    a = 1
    print a

在foo()中,a是全局的,因为它没有在函数内部设置。在bar()中,a是本地的。现在考虑这段代码:

def baz():
    print a
    a = 1

这里,a在函数内设置,因此它是本地的。但它在print语句时尚未设置,因此您将获得UnboundLocalError。

答案 1 :(得分:0)

您忘了将score传递给hey_user()

答案 2 :(得分:0)

看起来它可能是得分变量。它是main()中的本地,但您尝试在hey_user()中引用它。

答案 3 :(得分:0)

如果您想将得分作为全局变量,请务必使用global声明声明:

def main():         全球得分         得分= 0         问题,解决方案= print_et_list()         scoresofar = hey_user(解决方案)         打印“\ n你的分数现在”,得分         问题,解决方案= print_et_list()