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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vue项目关于eslint

    Vue项目关于eslint  新公司的Vue项目没有配置eslint,虽然平时coding的时候都会按照eslint的标准去写,但是没有统一的配置后期项目代码review的时候总还是不太方便。  Vue的项目配置eslint还是很简单的。它属于依赖插件中的一种,可以像安装其他插件一样在命令行用npminstalleslint-g安装,也可以修改package.json文件去更新项目的依赖包,重新跑一遍npm…

    2022年6月18日
    28
  • 50个多线程面试题,你会多少?(一)[通俗易懂]

    50个多线程面试题,你会多少?(一)[通俗易懂]下面是Java线程相关的热门面试题,你可以用它来好好准备面试。什么是线程? 什么是线程安全和线程不安全? 什么是自旋锁? 什么是Java内存模型? 什么是CAS? 什么是乐观锁和悲观锁? 什么是AQS? 什么是原子操作?在JavaConcurrencyAPI中有哪些原子类(atomicclasses)? 什么是Executors框架? 什么是阻塞队列?如何使用阻塞队列来…

    2022年5月2日
    37
  • python 生成EXE文件 并执行

    python 生成EXE文件 并执行1、电脑桌面,输入“win+R”组合键,在弹出窗口中输入“cmd”,点击确定。2、安装Pyinstaller,在cmd窗口,输入指令“pipinstallpyinstaller”进行网络安装、等待并且确认pyinstaller安装完毕3、安装完毕后,进入要生成exe文件的文件目录。使用指令“pyinstaller-Fxxx.py”生成exe文件。等待生成完毕后,回到源文件目录,在dist目录下,找到生成的exe文件,即可完成Python生成exe文件操作。用python.

    2022年6月7日
    37
  • get请求与post提交区别的简易理解

    get请求与post提交区别的简易理解

    2021年7月16日
    65
  • chegg网站_chunked

    chegg网站_chunked服务端给浏览器发送报文时,必须告诉浏览器报文的大小,这样浏览器可以根据报文大小来判断报文的完整性以及在长连接中确定报文的截尾。但是很多服务器的报文是动态创建的,在发送之前是无法确定其大小的。服务器只有等待内容全部创建后,计算出主体的大小,才能响应客户端的请求,这样的处理方法大大延迟了响应。传输编码中的分块编码为这种困难提供了解决方案,服务器可以逐块发送主体,并说明每块的大小就可以了。HTTP协议中

    2025年8月1日
    2
  • jQuery Mobile入门

    jQuery Mobile入门

    2021年9月4日
    71

发表回复

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

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