在python中赋值错误之前引用

时间:2009-05-13 00:08:33

标签: python

在Python中,我收到以下错误:

UnboundLocalError: local variable 'total' referenced before assignment

在文件的开头(在出现错误的函数之前),我使用global关键字声明'total'。然后,在程序的主体中,在调用使用'total'的函数之前,我将它指定为0.我已经尝试在各个地方将它设置为0(包括文件的顶部,就在它被声明之后) ),但我不能让它工作。有谁看到我做错了什么?

4 个答案:

答案 0 :(得分:117)

我认为你错误地使用'全球'。见Python reference。你应该在没有全局的情况下声明变量,然后在你想要访问全局变量时在函数内部声明它global yourvar

#!/usr/bin/python

total

def checkTotal():
    global total
    total = 0

见这个例子:

#!/usr/bin/env python

total = 0

def doA():
    # not accessing global total
    total = 10

def doB():
    global total
    total = total + 1

def checkTotal():
    # global total - not required as global is required
    # only for assignment - thanks for comment Greg
    print total

def main():
    doA()
    doB()
    checkTotal()

if __name__ == '__main__':
    main()

由于doA()未修改全局总数,因此输出为1而不是11。

答案 1 :(得分:3)

我的情景

pivot

答案 2 :(得分:0)

def inside():
   global var
   var = 'info'
inside()
print(var)

>>>'info'

问题结束

答案 3 :(得分:-1)

我发现这个帖子的原因是我自己在自己的代码中有此错误,而且我知道距发布该帖子已经有一段时间了,您已经获得了针对该情况的一些答案和已解决的问题,但只想解释一下我如何修复它,以防它可以帮助其他人!基本上我最初以为是像使用REPL一样使用REPL.it进行代码编辑,就像为朋友制作东西一样,并且知道她无论如何都不想像代码编辑器那样下载,关键是我认为它不能无法处理代码,因为那时的复杂度在139点甚至更高,但是后来我开始试验并意识到,在我的函数集内,在a_loop函数内真正循环之外,该字母要注册,需要定义它!因此,基本上,在这种情况下,我实际上没有在代码中定义计数功能!我会在这里共享我的代码,但是它像打印语句中的代码一样个人化,而且它的长度为2349行,是的,希望这能有所帮助!如果可以的话,还建议您使用我可能会用到的一些代码,如果可以的话,可以将其放入更多脚本中,以使其更容易动用!再次希望对您有所帮助,如果您有任何疑问,请随时提出,我将尽我所能回答!希望对您有所帮助!

-山姆