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行收到错误。欢迎任何好的输入。
答案 0 :(得分:0)
Python解析器在执行甚至单行之前读取整个文件。在函数为def
时,它的主体被解析,Python决定哪些符号(变量名称)引用什么。如果它在函数内部看到任何赋值语句,则受让人将成为本地变量;除非您使用global
或nonlocal
关键字明确覆盖它。如果函数体中没有赋值语句,则该变量将从外部范围继承。