常见的local variable 'x' referenced before assignment问题

2023-05-16

def fun1():
    x = 5
    def fun2():
        x *= 2
        return x
    return fun2()

如上代码,调用fun1()

运行会出错:UnboundLocalError: local variable 'x' referenced before assignment。

这是因为对于fun1函数,x是局部变量,对于fun2函数,x是非全局的外部变量。当在fun2中对x进行修改时,会将x视为fun2的局部变量,屏蔽掉fun1中对x的定义;如果仅仅在fun2中对x进行读取,则不会出现这个错误。

解决办法:使用nonlocal关键字

def fun1():
    x = 5
    def fun2():
        nonlocal x
        x *= 2
        return x
    return fun2()

fun1()
Out[14]: 10

使用了nonlocal x后,在fun2()中就不再将x视为fun2的内部变量,fun1函数中对x的定义就不会被屏蔽掉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见的local variable 'x' referenced before assignment问题 的相关文章

  • JavaScript 中 var、let 和 const 有什么区别?

    变量声明只是告诉计算机变量存在以及它应该以什么值开始 与其他编程语言类似 JavaScript 也允许声明变量 JavaScript 中可以使用三个关键字来声明变量 let var 和 const 每个关键字对于如何使用它们创建的变量都有不
  • 什么是本地主机?

    在计算机网络中 术语 本地主机 指当前用于访问它的设备 它用于通过环回网络接口访问主机上运行的网络服务 使用环回接口绕过任何本地网络接口硬件 期限 本地主机 是由单词的组合衍生而来 local and host 这个单词 local 指的是
  • tensorflow中optimizer minimize自动训练简介和选择训练variable的方法

    本文主要介绍tensorflow的自动训练的相关细节 并把自动训练和基础公式结合起来 如有不足 还请指教 写这个的初衷 有些教程说的比较模糊 没体现出用意和特性或应用场景 面向对象 稍微了解点代码 又因为有限的教程讲解比较模糊而一知半解的初
  • 如何将 svg 画布保存到本地文件系统

    有没有办法允许用户在使用浏览器在 javascript svg 画布上创建矢量图之后 将此文件下载到本地文件系统 SVG 对我来说是一个全新的领域 所以如果我的措辞不准确 请耐心等待 您可以避免往返服务器 对 SVG xml 进行 Base
  • 使用 Mockito 模拟局部范围对象的方法

    我需要一些帮助 Example void method1 MyObject obj1 new MyObject obj1 method1 我想嘲笑obj1 method1 在我的测试中 但为了透明 所以我不想制作和更改代码 Mockito
  • 将 HTML 输入文件表单中的图像存储在本地

    我想知道是否可以存储来自
  • 如何在 Firefox 11 中查看来自 http://localhost 提供的页面的 file:// 图像?

    我的本地主机 端口 8080 上有一台服务器正在尝试为本地文件创建 IMG 标签 但是 这些文件不会出现在 Firefox 11 中 我最初是使用 Javascript 创建图像标签 但由于失败 我又转而使用 HTML 来尝试直接引用文件的
  • 具有模块导入的命名空间

    我正在学习Python 尽管我已经学习了大约一年 但我仍然是一个初学者 我正在尝试编写一个在主模块中调用的函数模块 被调用模块中的每个函数都需要数学模块才能运行 我想知道是否有一种方法可以在不将数学模块导入被调用模块内的情况下执行此操作 这
  • 从 XCode 调用本地 HTML 文件时出现问题

    这是我的 WebView 代码 webView loadRequest NSURLRequest requestWithURL NSURL fileURLWithPath NSBundle mainBundle pathForResourc
  • 在 jsFiddle 中有效,但在我的网站中无效

    由于某种原因 我网站上的这个 jQuery 代码可以在 jsFiddle 上运行 但不能在本地运行 代码是一样的 我刚刚复制并粘贴了它 谁能向我解释这是怎么回事 jsFiddle Local 使用Chrome的开发者工具 在控制台中出现错误
  • 带有 if 语句的函数中的全局变量

    好吧 我目前正在做一个用 python 制作二十一点游戏的项目 但遇到了一些麻烦 我的问题之一是我不知道何时将变量定义为全局变量 特别是在带有 if 语句的函数中 如果我在 if 语句之外有一个全局变量 我是否必须声明该变量在 if 语句内
  • Cordova 3.4 Android 本地视频文件无法播放

    我已经尝试了几天通过 cordova 3 4 应用程序在 Galaxy Tab 4 2 上播放本地视频文件 当我使用绝对 http url 时 视频播放得很好 这是我尝试过的 我将视频文件放入 asset res raw 文件夹中 如下所示
  • 创建本地和实例对象时出现 java StackOverflowError

    大家好 有人可以解释一下为什么这段代码会给我 StackOverflowError 错误吗 如果您能解释 instanceObj 初始化并调用 ObjectTest 构造函数和 java lang Object 构造函数时发生的情况 我真的
  • Amazon SimpleDB 用于开发环境/本地安装

    有没有一种方法 工具可以模拟Amazon的SimpleDB以进行开发 在我的上述探索中 我发现这个工具 http mac wareseeker com Tools simpledb dev 0 1 5 zip 3000833但这是针对 Ma
  • 如何禁用maven发布插件检查本地修改?

    我使用maven发布插件 在我的 pom 中存在和 Ant 任务 它自动修复一些具有附加信息的属性文件 此修复不应出现在 SCM 中 但 Maven 并没有以成功完成 因为错误 Cannot prepare the release beca
  • 在本地运行“python manage.pysyncdb”时出错,但通过 Heroku 运行相同命令时没有错误

    我是 Heroku 和 Django Python 的新手 我希望找到我遇到的问题的答案 我一直在关注 Heroku 开发中心的入门教程 https devcenter heroku com articles django https de
  • Laravel homestead 多个站点选择哪个本地可访问

    我在 laravel homestead 中有多个站点 现在 我想通过本地网络中的 IP 访问特定站点 但我总是得到我不想要的网站 家园 yaml sites map mdb local to home vagrant code mdb p
  • 在php中注释局部变量

    我正在使用 Eclipse PDT 并且想使用 Phpdoc 注释局部变量 我所看到的是我可以使用注释类的变量 属性 var甚至 property 但是对于局部变量来说这怎么可能呢 我怎样才能做这样的事情 function foo var
  • 使用应用程序中存储的图像的本地路径将 Web 应用程序加载到 Web 视图中

    我希望能够创建一个使用 WebView 请求 url 的应用程序 从外部 Web 应用程序返回 html 和 css 引用作为实际应用程序中的资产的图像 这 想法基本上是加速一切 以便图像永远不必 被下载 这是一个简化的示例 服务器 HTM
  • 通过站点到站点 VPN 将 Azure 网站连接到本地数据库

    我的目标是运行一个天蓝色的网站 该网站可以访问我们本地公司数据库中的数据 我按照网络上的教程设置了一个 Azure 虚拟网络 并通过站点到站点 VPN 将其连接到我们本地公司网络 在天蓝色门户中 我可以看到连接实际上正在工作 并且数据已被接

随机推荐

  • MySql学习笔记(三)MySql常用命令说明

    一 数据库命令 1 1显示数据库命令 命令 xff1a mysql gt show databases 执行后 xff1a 43 43 Database 43 43 information schema mysql performance
  • 什么是源端口和目的端口

    源端口就是指本地端口 目的端口就是远程端口 一个数据包 xff08 pocket xff09 被解封装成数据段 xff08 segment xff09 后就会涉及到 连接上层协议的端口问题 很多人都在源端口和目的端口这两个概念上犯迷糊 xf
  • Redux 学习系列(一) —— 基础概念入门篇

    简介 Redux 是一个可预测的 JavaScript 应用状态管理容器 xff0c 也可以说是一个应用数据流框架 作用 Redux 主要是用作应用状态的管理 它抽离所有组件的状态 xff0c 构造一个中心化的单独常量状态树 xff08 对
  • ini文件

    关于ini 文件的存储于加载 xff0c 初次遇到 xff0c 刚接触ini 文件 xff0c 我想我该把它记下 xff0c 以后提醒自己要常用 参数 保存 xff1a 参数结构体 struct TextConfig int nVol 音量
  • TX2安装Realsense -L515相机并在ros下 运行 总结

    1 写在最前面 坑爹呀有木有 xff0c L515 刚弄出来 xff0c 导师就让用 一堆坑呀 xff0c 最大的谎言就是ubuntu1604能用realsense2 不管之前D435之流留下多少恩爱情仇 xff0c https www i
  • 12-IDEA配置JDK版本(2020.2.3版本)

    1 配置当前项目的JDK版本 File gt Project Structure gt Project SDKs xff0c 也可以直接点击右上角的图标 2 配置之后创建的新项目JDK版本 类似于全局配置 File gt New Proje
  • 傅立叶变换详解

    傅里叶变换 傅里叶变换 xff08 Fourier transform xff09 是一种线性的积分变换 xff0c 从时间转换为频率的变化 1 连续傅里叶变换 这是将频率域的函数F 表示为时间域的函数f xff08 t xff09 的积分
  • 快速排序算法的发明者霍尔

    霍尔介绍 霍尔 Sir Charles Antony Richard Hoare 是一位英国计算机科学家 xff0c 他也是著名的快速排序算法的发明者 他出生于斯里兰卡 xff0c 1956年毕业于牛津大学 然后的两年里他服役于英国皇家海军
  • 基于QT实现的可视化单链表

    前言 概念介绍 线性表的基本概念已经在上节可视化线性表之顺序存储过程中讲解 xff0c 下面我们主要讲解线性表的链式存储原理 原理讲解 我们以 12 8 3 24 21 6 11 15 22 9 这个序列为例说明线性表的链式存储的实现原理
  • 递归是如何用栈来实现的?

    前言 概念介绍 栈的基本概念和原理我们已在 文章链接 中做过具体说明 xff0c 下面我们主要讲讲递归算法 什么是递归 xff1f 百度百科上的解释如下 xff1a 程序调用自身的编程技巧称为递归 xff1b 一般来说 xff0c 递归需要
  • 可视化讲解:什么是分糖果问题?

    前言 概念介绍 在上一节 算法 xff1a 什么是分糖果问题 xff1f 中我们已经详细的描述了分糖果问题的基本概念 xff0c 在这里我们就不再赘述 下面我们用具体的例子来说明解该问题的原理 原理讲解 首先初始化每个人一个糖果 然后这个算
  • 算法:什么是数飞机问题?

    最近小多米一直爬在窗子边抬头看着天空 xff0c 指着空中飞机留下的白色痕迹 xff0c 激动的手舞足蹈的给我说 xff1a 飞机 xff0c 飞机 其实每架飞机的起飞和降落都有固定的时间 xff0c 假定已经知道了每架飞机起飞和降落的时间
  • 可视化讲解:什么是数飞机问题?

    前言 概念介绍 在上一节 算法 xff1a 什么是数飞机问题 中我们已经详细的描述了数飞机问题的基本概念 xff0c 在这里我们就不再赘述 下面我们用具体的例子来说明讲解该问题的原理 原理讲解 我们可以用一个Map来记录每一时间点的降落和起
  • Redux 学习系列(二) —— 实现一个计数器

    目录结构 xff1a src span class token operator span span class token operator span App js span class token operator span index
  • VS2013未能正确加载的问题

    今天使用电脑 xff0c 关机重启时 xff0c WINDOWS提示 正在配置中 请勿关机 的提醒 xff0c 等重启后 xff0c 打开VS2013就提示了未加载成功的问题 xff0c 如下图 xff1a 我的解决方法是 xff1a 找到
  • 关于CString的拷贝问题

    我定义了一个结构体数组 xff0c 如图我想用它了保存全局变量 当我使用memcpy函数时 xff0c 结构体数组时的CString变量总是相互覆盖 xff0c 让我很无语 xff0c 但我用Append函数时 xff0c 结构体之间的CS
  • Linux离线环境安装bzip2

    1 下载离线安装包 bzip2 1 0 6 13 el7 x86 64 rpm http mirror centos org centos 7 os x86 64 Packages bzip2 1 0 6 13 el7 x86 64 rpm
  • RPM命令的--nodeps 和--force参数解释

    1 nodeps就是安装时不检查依赖关系 xff0c 比如你这个rpm需要A xff0c 但是你没装A xff0c 这样你的包就装不上 xff0c 用了 nodeps你就能装上了 2 force就是强制安装 xff0c 比如你装过这个rpm
  • linux部署Python项目,并解决依赖自定义模块报错问题

    背景 xff1a windows中使用pycharm完成python项目 xff0c 需在linux部署 一 安装Anaconda 1 下载Anaconda3 2021 05 Linux x86 64 sh 文件 2 执行命令 sh Ana
  • 常见的local variable 'x' referenced before assignment问题

    def fun1 x 61 5 def fun2 x 61 2 return x return fun2 如上代码 xff0c 调用fun1 运行会出错 xff1a UnboundLocalError local variable 39 x