Python错误:UnboundLocalError: local variable ‘total’ referenced before assignment解决办法[通俗易懂]

Python错误:UnboundLocalError: local variable ‘total’ referenced before assignment解决办法[通俗易懂]1.错误概述今天练习类似于如下代码的时候遇到了一个UnboundLocalError错误,该错误的内容翻译过来就是:局部变量total没有定义就使用了。total=10defchange(): total=total+1 print(total)change()D:\>pythontest.pyTraceback(mostrecentcall…

大家好,又见面了,我是你们的朋友全栈君。

1.错误概述

今天练习类似于如下代码的时候遇到了一个UnboundLocalError错误,该错误的内容翻译过来就是:局部变量total没有定义就使用了。

total = 10
def change():
	total = total + 1
	print(total)
change()
D:\>python test.py
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    change()
  File "test.py", line 3, in change
    total = total + 1
UnboundLocalError: local variable 'total' referenced before assignment

2.原因分析

如果在一个范围内,对一个变量进行赋值,那么这个变量就会被认为是局部变量,就像在change()这个函数范围之内,我们对total这个变量进行了重新赋值:total=total+1,那么编译器就会认为total这个变量是一个局部变量,而这个赋值表达式实际上是从右向左进行的,也就是说,在进行total+1运算的时候,total并没有被定义,所以就爆出了这个UnboundLocalError错误。

3.解决办法

在对total进行赋值之前,先用global关键字将total变成一个全局变量,这样设置之后,编译器就会看到total已经在函数之外定义过了,所以就不会报错。代码如下:

total = 10
def change():
        global total
	total = total + 1
	print(total)
change()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147979.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言中fprintf的作用,C语言中fprintf函数介绍

    c语言中fprintf的作用,C语言中fprintf函数介绍C语言中,如果简单的输出txt,或者dat文件,或者我们需要输出标准化格式化的的数据,那么我们就会需要这个函数,我在地球物理学专业课中实验课编程中,总会遇到这个函数,现在我就把收集来的信息分享一下。fprintf是C/C++中的一个格式化写—库函数,位于头文件中,其作用是格式化输出到一个流/文件中;函数原型为intfprintf(FILE*stream,constchar*forma…

    2022年10月18日
    3
  • intellij idea激活码2021.9-激活码分享

    (intellij idea激活码2021.9)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1STL5S9V8F-eyJsaWNlbnNlSWQiOi…

    2022年3月27日
    95
  • 什么是实例化,实例化、声明、初始化的区别

    什么是实例化,实例化、声明、初始化的区别实例化 instantiate 是指在面向对象的编程中 把用类创建对象的过程称为实例化 是将一个抽象的概念类 具体到该类实物的过程 实例化过程中一般由类名对象名 new 类名 参数 1 参数 2 参数 n 构成 简介在面向对象的编程中 通常把用类创建对象的过程称为实例化 其格式如下 如 Datedate newDate 就是用日期类创建了一个日期的对象 就叫对象的实例化

    2025年10月27日
    4
  • origin画图数据_origin多元线性回归拟合

    origin画图数据_origin多元线性回归拟合制图完成效果图如下。1.原始数据为真实值与预测值。2.另外两列是制作中间的标准线。优化直线。3.4.对预测值与真实值的图进行优化。5.将标准线图层复制到当前页面,ctrl+C,V就行了。将标准线的网格删除。将线移动到该有的位置即可。对周围的字体大小等修正后即可。…

    2022年9月21日
    2
  • NTP校时设置

    NTP校时设置一、WindowsServer2008–TimeServer前言:国家时间与频率标准实验室 &amp;&amp;NTP服务器 也可以忽略1~6直接跳7 如果已改过机码请使用 1    Cmd:2     netstopw32time3     w32tm/unregister4     w32tm/register…

    2022年6月24日
    68
  • 惠普笔记本拆机详细步骤

    惠普笔记本拆机详细步骤第一次拆电脑,拆着玩玩,非也,拆机原因一:本人笔记本两个小喇叭,结果一个正常声,一个破音了,不管把声音调大还是调小,这破音的效果依然不减,把声音出孔堵住听着舒服点…..拆机原因二:发热特别严重,编

    2022年7月1日
    98

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号