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而言就是一个自由变量
原文:https://www.cnblogs.com/failan/p/14409138.html