理解 python 中局部变量的错误
当在嵌套函数中引用局部变量时,python 可能引发一个错误:unboundlocalerror: local variable '变量名' referenced before assignment。
像以下代码所示:
def f1(): i = 1 def f2(): i = i + 1
登录后复制
当执行 f2() 时,它将抛出 unboundlocalerror。这是因为 f2() 中的 i 被解释为一个新的局部变量,而没有引用父函数 f1() 中同名的变量。
立即学习“Python免费学习笔记(深入)”;
本质上,python 无法弄清楚 f2 中的 i 是否是 f1 中的 i,从而导致错误。
解决方法
要解决此问题,可以使用以下方法之一:
- 使用列表对象:将 i 声明为一个列表对象,如 i = [1]。这将允许子函数修改列表的元素,但不能直接修改列表本身。
- 使用 nonlocal 关键字(python 3):在 python 3 中,可以使用 nonlocal 关键字声明子函数中的变量引用父函数的同名局部变量,允许其直接修改该变量。
示例:
# 使用列表对象 def f1(): i = [1] def f2(): i[0] = i[0] + 1 # 使用 nonlocal 关键字(Python 3) def f1(): i = 1 def f2(): nonlocal i i = i + 1
登录后复制
以上就是Python 嵌套函数中引用局部变量时,为什么会出现 UnboundLocalError?的详细内容,更多请关注抖狐科技其它相关文章!
-
快手在什么地方打开快手小剧场
如何打开快手小剧场?对于快手这款软件,除了丰富的短视频和精彩的直播内容之外,还有一项吸引人的功能——快手小剧场。许多用户对于这个功能还比较陌生,不知道如何打开。本篇文章将详细介绍快手小剧场的具体位置,...
-
iso文件u盘怎么安装
可以通过以下步骤使用 iso 文件安装到 u 盘:准备至少 8gb 的空或 fat32 格式化的 u 盘。下载要安装的操作系统或软件的 iso 文件。使用 rufus 或 etcher(windows...
-
Win10无法完成U盘格式化怎么处理
如何解决 win10 u盘格式化失败的问题?u盘是日常生活中不可或缺的存储工具。当u盘空间不足或被病毒感染时,格式化操作是必不可少的。但有时,在 windows 10 系统中,用户可能会遇到格式化 u...
-
爱奇艺app可以同时登录几个设备
爱奇艺 app 的同时登录设备数量取决于会员等级:免费会员 1 个,vip 会员 2 个,星钻会员 3 个。查看同时登录设备:打开 app,点击「我的」>「设置」>「我的账号」>「设备管理」。爱奇艺...
-
中国移动怎么降档套餐
中国移动套餐降档须满足使用时长和流量限制,降档流程为:拨打客服电话或前往营业厅提交申请、确认降档信息、填写申请表、缴纳费用(可选),生效后会收到短信通知。如何降档中国移动套餐 中国移动套餐降档需满足以...