在Python中,我收到以下错误:
UnboundLocalError: local variable 'total' referenced before assignment
在文件的开头(在出现错误的函数之前),我使用global关键字声明'total'。然后,在程序的主体中,在调用使用'total'的函数之前,我将它指定为0.我已经尝试在各个地方将它设置为0(包括文件的顶部,就在它被声明之后) ),但我不能让它工作。有谁看到我做错了什么?
答案 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行,是的,希望这能有所帮助!如果可以的话,还建议您使用我可能会用到的一些代码,如果可以的话,可以将其放入更多脚本中,以使其更容易动用!再次希望对您有所帮助,如果您有任何疑问,请随时提出,我将尽我所能回答!希望对您有所帮助!
-山姆