Python作用域疑问记录

2018-06-18 00:59:15来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

a=0#回车
print(a)#回车 输出0
#复制下面这一段开始
def funcA():
    b='A'def funcB():
        a=2
        b='B'
        print(a,b)
    def funcC():
        nonlocal a
        b='C'
        a=3
        print(a,b)
    def funcD():
        global a
        b='D'
        a=4
        print(a,b)
    a=5
    print(a,b)
    funcB()
    funcC()
    funcD()
    print(a,b)
#复制结束
funcA()#调用函数
#输出结果5 A#第一次输出全局变量a和局部变量b
2 B#第二次输出funcB()结果,和预想的一样,同C#
3 C#第三次输出funcC()结果,和预想一样,还没看出却别
4 D#第四次输出funcD()结果,和预想一样,还没看出却别
3 A#第五次输出上面3个函数执行后的结果,发现全局变量a结果为3而不是5,这跟C#中的引用传参、静态变量有啥区别?
print(a)#输出4
print(a,b)#报错,全局变量只有a,如果funcD()中加一句global b会怎样呢?报错?
#错误信息如下:
Traceback (most recent call last):
  File "<pyshell#122>", line 1, in <module>
    print(a,b)
NameError: name 'b' is not defined

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python框架之Flask基础篇(二)-------- 数据库的操作

下一篇:python扩展库1&mdash;numpy