在Python中赋值错误之前引用
在Python中,我收到以下错误:
UnboundLocalError: local variable 'total' referenced before assignment
在文件的开头(在错误来自的函数之前),我使用global关键字声明“total”。 然后,在程序的主体中,在使用'total'的函数被调用之前,我将它赋值为0.我已经试过在不同的地方将它设置为0(包括文件的顶部,声明之后),但我不能得到它的工作。 有没有人看到我在做什么错了?
我认为你正在使用'全球'错误。 请参阅Python参考 。 你应该声明variables没有全局,然后在函数内部,当你想访问全局variables,你声明它是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。
我的情景
def example(): cl = [0, 1] def inner(): #cl = [1, 2] //access this way will throw `reference before assignment` cl[0] = 1 cl[1] = 2 //these won't inner()
- 浅拷贝,深层拷贝和正常赋值操作的区别究竟是什么?
- recursion代码返回无
- 为什么#egg = foo当从git repo进行pip安装时
- 如何给元组添加值?
- Django Rest Framework – 无法使用视图名称“user-detail”parsing超链接关系的URL
- django.core.exceptions.ImproperlyConfigured:加载MySQLdb模块时出错:没有名为MySQLdb的模块
- 检查包含列表中的string的string最简单的方法?
- 为什么tuple(set())== tuple(set())85%的时间哈希随机化启用?
- Numpy argsort – 它在做什么?