是python提前读取下一行代码

时间:2018-06-04 12:15:00

标签: python-3.x scope global-variables

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行收到错误。欢迎任何好的输入。

1 个答案:

答案 0 :(得分:0)

Python解析器在执行甚至单行之前读取整个文件。在函数为def时,它的主体被解析,Python决定哪些符号(变量名称)引用什么。如果它在函数内部看到任何赋值语句,则受让人将成为本地变量;除非您使用globalnonlocal关键字明确覆盖它。如果函数体中没有赋值语句,则该变量将从外部范围继承。