x=0y=0
def f():x=1y=1class C:print x,y
x=2
f()
格式化一下代码,代码格式都乱了。
首先,最上面的x,y是全局变量如果函数里不写global就给x和y赋值,那么x和y自动变成局部变量如果你类C里面不写x=2,打印出来的会是1,1,是局部变量x,y的值如果C里面写x=2,而且写在print后面,那么默认x是定义在C里面的,但是因为你在打印前没有给X赋值,所以它会获得一个默认的初值0