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)
上一篇 2022年6月15日 下午2:00
下一篇 2022年6月15日 下午2:16


相关推荐

  • springaop与aspectjweaver

    springaop与aspectjweaverorg.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname’sysScheduleUserDateServiceImpl’definedinURL[jar:file:/C:/Users/Administrator/.m2/repository/com/ruoyi/ruoyi-schedule-one/3.4.0/ruoyi-schedule-one-3.4.0.jar!/com/ruo

    2022年7月12日
    31
  • MyEclipse10.6 安装SVN插件方法及插件下载地址

    MyEclipse10.6 安装SVN插件方法及插件下载地址方法一:在线安装1.打开HELP->MyEclipseConfigurationCenter。切换到SoftWare标签页。 2.点击AddSite打开对话框,在对话框Name输入Svn,URL中输入:http://subclipse.tigris.org/update_1.6.x3.在左边栏中找到PersonalSite中找到SVN展开。将Core

    2022年7月20日
    18
  • WatchDog+Redis实现分布式锁

    WatchDog+Redis实现分布式锁代码说明 watchDog 机制主要是用来对 redis 中商品 key 进行锁续命 防止业务处理时间过长导致的误删 key 值 lua 脚本则用来对 redis 中指令的原子性操作 注意 lua 脚本中不能有复杂逻辑 防止阻塞 redis 创建定时任务线程工厂 privatestati FACTORY newThreadFac setNameForma watchDog get

    2026年3月20日
    2
  • vs2008 sp1怎么安装_vs2003

    vs2008 sp1怎么安装_vs2003vs2005的英文版sp1补丁431M中文版补丁sp1已经集成了VS2005WebApplicationProject VS2005的SP1足有430M,快有VS2003SP1的三倍大了!而且,安装起来是同样的慢,慢得让人以为是不是装不下去了(噢,我现在正在安装……)。  简单看了看VisualStudio2005ServicePack1说明:  1、支持新处理器(

    2022年10月5日
    3
  • 讯飞星火怎么设置密码[多图]

    讯飞星火怎么设置密码[多图]

    2026年3月14日
    2
  • android开发环境搭建——android studio

    android开发环境搭建——android studio文章目录一、安装jdk二、下载包含androidsdk的androidstudio三、安装AndroidStudio四、配置AndroidStudio五、第一个helloworld六、Androidsdk环境配置七、配置androidmanager镜像八、取消安装的时候设置的代理九、安装模拟器十、运行安卓程序1、下载jdk、androidsdk、eclipse、adt2、安装…

    2022年7月23日
    11

发表回复

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

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