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


相关推荐

  • 防火墙-interface GigabitEthernet0/0/0-ensp

    防火墙-interface GigabitEthernet0/0/0-ensp#interfaceGigabitEthernet0/0/0 undoshutdown ipbindingvpn-instancedefault ipaddress192.168.0.1255.255.255.0 service-managehttppermit service-managehttpspermit service-managepingper…

    2025年7月6日
    0
  • 数据库选型之内存数据库eXtremeDB

    数据库选型之内存数据库eXtremeDB鉴于内存数据库访问速率快的特点,本文分别从单线程、多线程(并发访问)和多线程读/写混合访问角度对eXtremeDB数据库读写速率展开测试。需要指出的是,本文读取操作包含将数据读取后,并在控制台显示出来

    2022年7月2日
    40
  • 数论基础——群环域

    数论基础——群环域文章目录一、群环域基本概念1.群2.环常见环3.域与椭圆曲线椭圆FpF_pFp​PointadditionAlgebraicsum椭圆曲线群的阶数ScalarmultiplicationandcyclicsubgroupsSubgrouporder子群的阶FindingabasepointDomainparametersECC(EllipticCurveCryptography)EncryptionwithECDHSigningwithECDSA一、群环域基本概念1.群

    2022年6月18日
    39
  • 解决session阻塞的问题

    解决session阻塞的问题

    2021年11月26日
    53
  • Python学习【第五篇】循环语句「建议收藏」

    Python学习【第五篇】循环语句「建议收藏」Python循环语句接下来将介绍Python的循环语句,程序在一般情况下是按顺序执行的。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句允许我们执行一个语句或语句组多次。Python

    2022年7月5日
    15
  • connectionstring写法「建议收藏」

    connectionstring写法「建议收藏」&lt;connectionstrings&gt;&lt;br&gt;&lt;addname="ConnectionStringName"connectionstring="DataSource=服务器名;InitialCatalog=数据库名;UserID=用户;Password=密码"&gt;&lt;/add&gt;providerName="System.Data.SqlClie

    2022年7月12日
    13

发表回复

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

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