Python中未绑定的本地错误我无法动摇!

问题描述:

http://pastie.org/1966237Python中未绑定的本地错误我无法动摇!

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

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

+0

实际上你应该把程序放入问题中,因为馅饼有时会消失。 – novalis 2011-05-24 14:01:53

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

def foo(): 
    print a 

VS

def bar(): 
    a = 1 
    print a 

在富(),一个是全球性的,因为它没有被设置在函数内部。在bar()中,a是本地的。现在考虑下面的代码:

def baz(): 
    print a 
    a = 1 

这里,a被设置在函数中,所以它是本地的。但是它在打印语句时没有设置,所以你得到了UnboundLocalError。

+0

很好的答案,谢谢。 – Louis93 2011-05-24 15:08:49

你忘了将score转换为hey_user()

看起来它可能是分数变量。它是main()中的一个局部变量,但是您可以尝试在hey_user()中引用它。

+0

问题:当我在整个事物的开始初始化分数时,仍会出现同样的错误。 – Louis93 2011-05-24 14:10:04

如果你想得分全局变量,一定要与global语句声明它:

高清的main(): 的总体得分 得分= 0 问题,解决方案= print_et_list() scoresofar = hey_user(解决方案) 打印“\ n您的比分是”,scoresofar 问题,解决方案= print_et_list()当您在设定前阅读一个局部变量的值