PHP前端开发

Python 嵌套函数中引用局部变量时,为什么会出现 UnboundLocalError?

百变鹏仔 5天前 #Python
文章标签 嵌套

理解 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,从而导致错误。

解决方法

要解决此问题,可以使用以下方法之一:

示例:

# 使用列表对象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