当前位置: 移动技术网 > IT编程>脚本编程>Python > Python作用域疑问记录

Python作用域疑问记录

2018年01月29日  | 移动技术网IT编程  | 我要评论

义乌稠州论坛,贵州人事人才信息网,腰倍舒

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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网