专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

python报UnboundLocalError是为什么_python

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 5:00:08       共计:3574 浏览

python报UnboundLocalError是为什么?

举个栗子:

>>> x = 10>>> def bar():... print(x)>>> bar()10

作品,但这个代码:

>>>>>> x = 10>>> def foo():... print(x)... x += 1

导致UnboundLocalError:

>>>>>> foo()Traceback (most recent call last): ...UnboundLocalError: local variable 'x' referenced before assignment

这是因为,当您对作用域中的变量进行赋值时,该变量将变为该作用域的局部变量,并在外部作用域中对任何具有相似名称的变量进行遮蔽。由于foo中的最后一个语句赋予一个新值 ,因此编译器将其识别为局部变量。因此,当早期尝试打印未初始化的局部变量并产生错误时。

在上面的例子中,你可以通过声明它是全局的来访问外部范围变量:

>>>>>> x = 10>>> def foobar():... global x... print(x)... x += 1>>> foobar()10

这个显式声明是为了提醒你(不同于类和实例变量的表面上类似的情况),你实际上是在修改外部变量的值:

>>>>>> print(x)11

您可以使用 关键字在嵌套范围内做类似的事情:

>>>>>> def foo():... x = 10... def bar():... nonlocal x... print(x)... x += 1... bar()... print(x)>>> foo()1011

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:python地图着色问题需要安装什么库_python | ·下一条:python异常处理的四种方法_python

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有