local variable 'xxx' referenced before assignment

简介: 定义了一个全局变量 s ,Python的一个函数里面引用这个变量,并改变它的值,结果报错local variable 'xxx' referenced before assignment,代码如下:s = 2  def fun():       if s== 2:          print s        s= 3         错误的意思就是s这个变量在引用前还没有定义,这上面不是定义了么?但是后来我把s= 2这句去掉就好了。

定义了一个全局变量 s ,Python的一个函数里面引用这个变量,并改变它的值,

结果报错local variable 'xxx' referenced before assignment,

代码如下:

  1. s = 2  

  2. def fun():   

  3.     if s== 2:  

  4.         print s

  5.         s= 3 

  6.   


      错误的意思就是s这个变量在引用前还没有定义,这上面不是定义了么?但是后来我把s= 2这句去掉就好了。后来想起python中有个global关键字是用来引用全局变量的


  1. s = 2  

  2. def fun():   

  3.      golbal s

  4.     if s== 2:  

  5.         print s

  6.         s= 3 

  7.         print s

原来在python的函数中和全局同名的变量,如果你有修改变量的值就会变成局部变量,在修改之前对该变量的引用自然就会出现没定义这样的错误了,如果确定要引用全局变量,并且要对它修改,必须加上global关键字。


目录
打赏
0
0
0
0
15
分享
相关文章
C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)
333 0
【前后端异常】http/https post请求 返回415错误状态码的解决方法
【前后端异常】http/https post请求 返回415错误状态码的解决方法
5060 0
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
数据库技术--数据库引擎,数据访问接口及其关系详解(附加形象的比喻)
数据库技术--数据库引擎,数据访问接口及其关系详解(附加形象的比喻)
Ubuntu 快速更换阿里源
本文主要给大家讲解如何为Ubuntu更换阿里源,通过以下四个步骤即可快速实现换源。
58537 3
Ubuntu 快速更换阿里源
5分钟部署百台云上计算机,22支参赛队伍快速接入南网电力调度AI应用大赛
事实上,这不是无影第一次被应用于电力调度场景。此前,无影已经被用于南网多部门的安全办公,也被南网用于解决业务国产化过程中,应用生态体验不足的问题。
724 0
5分钟部署百台云上计算机,22支参赛队伍快速接入南网电力调度AI应用大赛
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问