What does this print

x = 0
y = 0
def f():
      x = 1
      y = 1
      class C:
            print(x, y)
            x = 2

f()  # 0 1

Python解释器首先会在类C中寻找有无变量x的定义,发现没有后,就直接跳转到全局变量中,发现了有全局的变量x,则就调用了全局的变量x,而对于变量y而言,首先在类C中并没有对变量y进行赋值操作,因此,变量y对于类C而言就是一个自由变量

posted @ 2021-02-17 16:37  Allin007  阅读(37)  评论(0编辑  收藏  举报