奇怪的Python代码,谁能帮我解释一下??

奇怪的Python代码,谁能帮我解释一下??

"""
   奇怪的Python代码,谁能帮我解释一下??
"""

x = 0
y = 0
def fun():                  # 定义fun函数
    x = 1            
    y = 1
    class Test:             # 定义Test类
        global x,y
        print(x,y)
        x = 10
fun()                       # 调用fun函数
"""

这个程序定义了两个全局变量,分别叫做x和y。
在名为fun的函数中,定义了同名的叫x,y的局部变量。
在fun函数里面的Test类。它会打印x,y的值,并且改变x的值。
在这个print语句中,打印的是全局变量的x和y的值还是局部变量的x,y的值呢?
如果打印的是全局变量的值,那么输出都为0。
如果打印的是fun内的局部变量的值,那么输出都应该为1。

如果在print语句前明确的申明x,y为global,那么肯定输出0,0。代码就像下面这样:

如果明确的申明x,y为nonlocal,那么肯定输出1,1。

代码就像下面这样:

可是本程序没有明确,结果也出乎意料,输出的都不是以上所设想的值。
“””

李兴球

李兴球的博客是Python创意编程原创博客