UnboundLocalError原因

时间:2018-10-12 20:14:04

标签: python

仅当我们尝试对函数内部的非局部变量使用赋值运算符(例如x + = 5)时,才会发生UnboundLocalError吗?我尝试使用方法和函数(例如打印),并且有效。我也尝试使用全局变量(x)定义局部变量(y) (y = x + 5),它也起作用。

1 个答案:

答案 0 :(得分:0)

是-赋值运算符的存在是在当前范围内创建一个新变量(具有相同名称)的原因。在旧对象上调用变异方法不是问题,也不用该旧值进行操作,因为毫无疑问(如果只使用了一次赋值)您在说哪个值。

这里关注的不是值的修改。问题是所用变量的模糊性。也可以使用global关键字解决此问题,该关键字专门告诉Python使用全局版本,从而消除了歧义。

还请记住,像JavaScript中一样,Python变量(或global s)已被提升。在特定范围内使用的任何变量都是该范围从该范围开始处的变量。这意味着在函数内部使用的变量从函数开始就属于该范围内的变量,无论它是否出现在中间。

here是一个很好的参考。其他一些here