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

如本文章标有价格,需议价或其它事情商议请加微信pythonxia

"""
   奇怪的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。

代码就像下面这样:

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

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » 奇怪的Python代码,谁能帮我解释一下??
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页