本文主要是介绍Python报错集合篇8-UnboundLocalError: local variable 'x' referenced before assignment,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文介绍如何处理报错–UnboundLocalError: local variable ‘x’ referenced before assignment
源代码:
def fun1():x = 2def fun2():# nonlocal xx *= xreturn xreturn fun2()
print(fun1())
运行报错如下:
UnboundLocalError: local variable 'x' referenced before assignment
这里报错由于 闭包 产生的,Python认为内部函数的x是局部变量,外部函数的x被屏蔽了,因此内部x变量找不到值,导致报错。
下面有两种处理办法:
第一种方法,将x初始成一个list,再利用索引赋值
代码如下:
def fun1():x = [2]def fun2():# nonlocal x[0]x[0] *= x[0]return x[0]return fun2()
print(fun1())
第二种方法,Python有个关键词:nonlocal,可以将外部函数的x值引用到内部函数
代码如下:
def fun1():x = 2def fun2():nonlocal xx *= xreturn xreturn fun2()
print(fun1())
两种方法运行结果如下:
C:\Python37\python.exe "D:/Program Files/PycharmProjects/pycharmPrj/zzz/Python/lx0.py"
4
Process finished with exit code 0
这篇关于Python报错集合篇8-UnboundLocalError: local variable 'x' referenced before assignment的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!