
理解 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?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1351076.html
微信扫一扫
支付宝扫一扫