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()

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 什么软件可以测试网络的稳定性,网络稳定性测试软件

    什么软件可以测试网络的稳定性,网络稳定性测试软件@ECHOoffcolor0Aecho欢迎进行网络稳定状况测试(测试开始时间%date%%time%)echo=======================================================================echo运行脚本后不要关闭这个窗口,让它一直测试你的网络,不想测试了需手动关闭echo当你老掉线的时候运行本脚本,建议测试时间在30分钟左…

  • 公司这套架构统一处理 try…catch 这么香,求求你不要再满屏写了,再发现扣绩效!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:小李子说程序 www.toutiao.com/i6878184496945070604 前言 软件开发spri…

  • 大数据采集架构

    大数据采集架构概述一般来说,当在Hadoop集群上,有足够数据处理的时候,通常会有很多生产数据的服务器。这些服务器的数量上百甚至成千上万。小的数据还可以直接从应用程序写入HDFS,但庞大数量的服务器试着将海量数据直接写入HDFS或者HBase集群,会因为多种原因导致重大问题。所以这个中间系统(数据采集系统)就是将应用程序发送过来的信息转发到分布式的后台服务器集群上,ChuKwaChuKwa是…

  • Pytorch加载自己的数据集(使用DataLoader读取Dataset)[通俗易懂]

    Pytorch加载自己的数据集(使用DataLoader读取Dataset)[通俗易懂]1.我们经常可以看到Pytorch加载数据集会用到官方整理好的数据集。很多时候我们需要加载自己的数据集,这时候我们需要使用Dataset和DataLoaderDataset:是被封装进DataLoader里,实现该方法封装自己的数据和标签。DataLoader:被封装入DataLoaderIter里,实现该方法达到数据的划分。2.Dataset阅读源码后,我们可以指导,继承该方法必须…

  • 多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」 …

    多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」 …雷锋网(公众号:雷锋网)AI科技评论按:英国当地时间1月24日,DeepMind在伦敦组织线上直播,向全世界的游戏AI研究人员以及游戏爱好者们介绍自己的AI研发最新进展。参加直播的DeepMind研究人员是DeepMind团队联合研发负责人OriolVinyals和DavidSilver,后者也是Alph…

  • vue中解决跨域问题_js跨域解决方案

    vue中解决跨域问题_js跨域解决方案如果你是一个Web前端工程师,那么跨域这个问题肯定是绕不开的!1.创建vue.config.js设置devServer属性module.exports={devServer:{//webpack-dev-server配置host:’localhost’,port:8080,//配置本项目运行端口proxy:{…

发表回复

您的电子邮箱地址不会被公开。

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