解决:UnboundLocalError: local variable ‘js’ referenced before assignment

解决:UnboundLocalError: local variable ‘js’ referenced before assignment



文章目录

  • 解决:UnboundLocalError: local variable 'js' referenced before assignment
    • 背景
    • 报错问题
    • 报错翻译
    • 报错位置代码
    • 报错原因
    • 解决方法
      • 今天的分享就到此结束了



背景

在使用之前的代码时,报错:
Traceback (most recent call last):

File , line 1, in
js = js+1
UnboundLocalError: local variable ‘js’ referenced before assignment



报错问题

Traceback (most recent call last): ...File , line 1, in  js = js+1 UnboundLocalError: local variable 'js' referenced before assignment

截图如下:

在这里插入图片描述



报错翻译

主要报错信息内容翻译如下所示:

Traceback (most recent call last): ...File , line 1, in  js = js+1 UnboundLocalError: local variable 'js' referenced before assignment

翻译:

回溯(最近一次调用最后一次): ...js = js+1中的文件 “”,第 1 行 UnboundLocalError:赋值前引用的局部变量“js”


报错位置代码


...
js = 0
def main():js = js+1 print(js)
...


报错原因

经过查阅资料,发现是在函数内部更改全局变量就会出现此错误。

小伙伴们按下面的解决方法即可解决!!!



解决方法

要解决这个错误,需要在函数内部声明全局变量。

正确的代码是:


...
js = 0
def main():global jsjs = js+1 print(js)
...

补充:一些关于全局变量和局部变量的知识。

全局变量:如上面的例子,在函数外部赋值的变量被称为全局变量(global variable)。

局部变量:定义在函数内部的变量称为局部变量(local variable),局部变量只在函数内部起作用。

局部变量的代码示例如下:

def main():js= 3print(js)
main() #输出结果为3
print(js) #出错,NameError: name 'js' is not defined提示js未定义

再举一个例子:

js= 4 #全局变量
def main():js= 3 #局部变量print(js)
main() #返回3,因为在函数内部局部变量a=3
print(js)#返回4,因为在函数外部全局变量a被赋值为4

可见,在函数内部访问变量(js)时,系统首先在函数内部找有没有定义局部变量(js),如果没有,就会在函数外部找有没有定义全局变量(js),如果都找不到才会报错。但是如果在函数外部访问变量(js),那么只会寻找全局变量(js),如果没有就会报错,而不管程序有没有在某个函数内部定义局部变量(js)。



今天的分享就到此结束了

欢迎点赞评论关注三连

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB的原子性和多文档事务处理

原子性和事务处理是数据库操作的核心,保证了数据的准确性。依据数据库原子性,数据库和使用数据库的人员定义事务处理的方式。本文依据Mongodb的官方文档,整理Mongodb数据库的原子性和事务处理方法。 Mongodb的原子操作 Mongodb中&#xff0c…

实战案例:chatglm3 基础模型多轮对话微调

chatglm3 发布了,这次还发了base版本的模型,意味着我们可以基于这个base模型去自由地做SFT了。 本项目实现了基于base模型的SFT。 base模型 https://huggingface.co/THUDM/chatglm3-6b-base由于模型较大,建议离线下载后放在代码目录&#…

OSG编程指南:专栏内容介绍及目录

1、专栏介绍 OpenSceneGraph(OSG)场景图形系统是一个基于工业标准 OpenGL 的软件接口,它让程序员能够更加快速、便捷地创建高性能、跨平台的交互式图形程序。本专栏基于 OSG 3.6.5版本进行源码的编写及扩展,也通用于其他OSG版本的…

OpenTelemetry系列 - 第2篇 Java端接入OpenTelemetry

目录 一、架构说明二、方式1 - 自动化2.1 opentelemetry-javaagent.jar(Java8 )2.2 使用opentelemetry-javaagent.jar完成自动注入2.3 配置opentelemetry-javaagent.jar2.4 使用注解(WithSpan, SpanAttribute)2.5.1 代码集成WithS…

【栈和队列(2)】

文章目录 前言队列队列方法队列模拟实现循环队列练习1 队列实现栈 前言 队列和栈是相反的,栈是先进后出,队列是先进先出,相当于排队打饭,排第一的是最先打到饭出去的。 队列 队列:只允许在一端进行插入数据操作&…

20、Resnet 为什么这么重要

(本文已加入“计算机视觉入门与调优”专栏,点击专栏查看更多文章信息) resnet 这一网络的重要性,上一节大概介绍了一下,可以从以下两个方面来有所体现:第一是 resnet 广泛的作为其他神经网络的 back bone&…

Redis集合对象

一. 编码 集合对象的编码可以是intset或者hashtable。 intset编码的集合对象使用整数集合作为底层实现,集合对象包含的所有元素都保存在整数集合里面。 127.0.0.1:6379> sadd numbers 1 3 5 (integer) 3 127.0.0.1:6379> object encoding numbers "ints…

详细学习Pyqt5的10种容器(Containers)

Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图(Item View) 快速弄懂Pyqt5的4种项目部件(Item Widget) 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…

Django rest froamwork-序列化关系

关系字段用于表示模型关系。它们可以应用于 ForeignKey、ManyToManyField 和OneToOneField 关系,也可以应用于反向关系和自定义关系(如GenericForeignKey)。 注意:关系字段是在relations.py中声明的,但按照惯例&#…

使用凌鲨进行内网穿透

为了方便在本地进行开发和调试工作,有时候需要安全地连接内网或Kubernetes集群中的服务。 在net proxy server中可以限制访问用户,也可以设置端口转发的密码。 使用 连接端口转发服务 列出可转发端口 可转发端口是服务端设置的,不会暴露真…

自恋的领导

自恋的领导》??? 在职场中,我曾经遇到过一位自恋狂的领导。他总是自吹自擂,自我标榜,而且对团队合作态度消极,经常拖后腿。他的言行举止充满了负能量,让人感到非常不舒服。例如&…

13 OAuth2.0实战:微服务接收身份信息

上一节介绍了网关层面的统一认证鉴权,将解析过的身份信息加密放入请求头传递给下游微服务; 那么下游微服务如何接收网关传递的身份信息? 很简单,只需要在每个服务的过滤器中从请求头接收,将其解密。 木谷博客系统中是将该过滤器统一放在blog-common-starter中,这样后续…

锁表的原因及解决办法

引言 作为开发人员,我们经常会和数据库打交道。 当我们对数据库进行修改操作的时候,例如添加字段,更新记录等,没有正确评估该表在这一时刻的使用频率,直接进行修改,致使修改操作长时间无法响应&#xff0…

2023年【起重机司机(限桥式起重机)】报名考试及起重机司机(限桥式起重机)考试资料

题库来源:安全生产模拟考试一点通公众号小程序 2023年【起重机司机(限桥式起重机)】报名考试及起重机司机(限桥式起重机)考试资料,包含起重机司机(限桥式起重机)报名考试答案和解析及起重机司机(限桥式起重机)考试资料练习。安全生产模拟考试一点通结合…

正是阶段高等数学复习--函数极限的计算

之前在预备阶段中函数极限的解决方式分三步,第一步观察形式并确定用什么方式来解决,第二步化简,化简方式一共有7种,分别是最重要的三种(等价替换、拆分极限存在的项、计算非零因子)以及次重要的4种&#xf…

vGPU_unlock实现消费级显卡虚拟化

vGPU_unlock实现显卡虚拟化 机器详情换源(清华源)配置引导文件配置内核添加禁止nouveau模块设置内核参数,以便虚拟机使用PCI设备的直通功能更新所有已经有 initramfs 的内核版本的 initramfs 镜像下载所需的软件拉取代码初次验证创建用于vGPU解锁的文件下载vgpu所需的驱动安…

BurpSuite 请求/响应解密插件开发

BurpSuite 请求/响应解密插件开发 本文主要记录如何利用burp官方的新版API即MontoyaApi 写一个请求/响应的解密插件。背景下面是主要的操作步骤:根据上述操作做完之后,生成,然后在burp中加载插件,然后通关抓包看效果,具…

DevEco Studio 调整开发工具中的字体大小与行高

我们打开编辑器 选择 左上角 File 下的 Settings 将左侧菜单栏 编辑 展开 我们在编辑下面 选择 Font 然后 如下图指向的两个位置 我们可以调整它的字体大小和行高 设置好之后 右下角 点击 Apply 应用 然后点击 OK即可 当然 你按着 Ctrl 然后鼠标滚动 也可以像浏览器那样 拉…