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而言就是一个自由变量