var = "Old world"
class a(object):
def b(self):
print(var)
#var = "Updated world"
aObj = a()
aObj.b()当我运行上面的代码时,它工作得很好。但是当我取消对第5行var="Updated World"的注释时,它会在第4行抛出UnboundLocalError。我知道我不能在第5行修改var。但是为什么在第4行出现错误。任何好的输入都是受欢迎的。
发布于 2018-06-04 12:28:11
Python解析器甚至在执行一行文件之前读取整个文件。当一个函数被def合并时,它的主体被解析,并且Python决定什么符号(变量名)指什么。如果它在函数中看到任何赋值语句,则它将受让人作为局部变量;除非您使用global或nonlocal关键字显式重写该语句。如果函数体中没有赋值语句,则从外部范围继承变量。
https://stackoverflow.com/questions/50680385
复制相似问题