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


相关推荐

  • 学习笔记-const与readonly的异同

    学习笔记-const与readonly的异同(1)const定义时即初始化,运行期间无法再初始化;readonly除了在定义时可以初始化外,还能再运行期间的构造函数中初始化,实例只读变量只能在实例构造函数中初始化,静态只读变量只能在静态构造函数

    2022年7月2日
    31
  • SpringBoot连接使用PostgreSql数据库

    SpringBoot连接使用PostgreSql数据库目录一、介绍1、情况说明2、安装软件及依赖包二、配置连接数据库其他情况一、介绍1、情况说明在这里我使用SpringBoot配置Mybaits连接到PostgreSql数据库的。我的源码也会提供给大家(此文末尾),效果如下数据库:运行效果:2、安装软件及依赖包完整搭建SpringBoot及依赖包:https://blog.csdn.net…

    2022年6月25日
    42
  • 十道海量数据处理面试题与十个方法大总结

    十道海量数据处理面试题与十个方法大总结所谓海量数据处理,就是基于海量数据上的存储、处理、操作。        海量就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是无法一次性装入内存。解决办法:(1)针对时间,可以采用巧妙的算法搭配合适的数据结构,如Hash/bit-map/堆/数据库或倒排索引/trie树;(2)针对空间,大而化小:分而治之/hash映射,把规模大化为规模小的,各个击破。

    2022年6月23日
    46
  • ribbon负载均衡策略有哪几种_负载均衡策略的是

    ribbon负载均衡策略有哪几种_负载均衡策略的是目录1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,2.@LoadBalanced1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,对于SpringCloudAlibaba解决方案中又提供了NacosRule策略,默认的负载均衡策略是轮训策略。如图所示:当系统提供的负载均衡策略不能满足我们需求时,我们还可以基于IRule接口自己定义策略.Ribbon是什么?(Netflix公司提供的负载均衡…

    2022年10月13日
    4
  • docker镜像文件导出_docker导入导出镜像

    docker镜像文件导出_docker导入导出镜像导语:需要迁移docker目录,以防万一备份一下镜像。方法1:dockerimages|awk'{print$1″:”$2}’#效果等同于dockerimages–format'{{.Repository}}:{{.Tag}}’逐个导出foriin`dockerimages–format'{{.Repository}}:{{.Tag}}’`;dodockersave$i>/mnt/images/`echo$i|sed’s/:/-

    2025年8月27日
    6
  • linux暴力破解工具

    对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理,SSH是SecureShell的缩写,由IETF的网络小组(NetworkWorkingGroup)所制定;SSH 为建立在应用层基础上的安全协议。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信…

    2022年4月7日
    77

发表回复

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

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