美文网首页
面试官:全局变量和局部变量变量名能否一样?

面试官:全局变量和局部变量变量名能否一样?

作者: 程序员臻叔 | 来源:发表于2020-07-22 18:43 被阅读0次

    问:全局变量和局部变量变量名能否一样?

    答:全局变量和局部变量变量名可以一样

    1. 在函数内可以访问全局变量(foo0),但无法直接修改全局变量(foo3

    2. 函数内重新定义一个和全局变量同名的局部变量(foo1)也是可以的,但是局部变量和全局变量的作用域不同,不互相影响。

    3. 假如想要修改全局变量,需要用到global关键字(foo2

    4. 对于list这种数据类型,情况和string又不太一样,函数内可以控制全局变量的元素(foo4

    a = 2
    b = [1, 2, 3, 4, 5]
    
    def foo0():
        print(a)
    
    
    def foo1():
        a = 1
        print(a)
    
    
    def foo2():
        global a
        a += 1
        print(a)
        
    def foo3():
        a += 1
        print(a)
    
    def foo4():
        b.append(6)
        print(b)
    
    if __name__ == '__main__':
        foo0()  // 结果:2
        foo1()  // 结果:1
        foo2()  // 结果:3
        foo3()  // 结果:UnboundLocalError: local variable 'a' referenced before assignment
        
        print(b) // 结果:[1, 2, 3, 4, 5]
        foo4()   // 结果:[1, 2, 3, 4, 5, 6]
        print(b) // 结果:[1, 2, 3, 4, 5, 6]
    

    本篇文章由一文多发平台ArtiPub自动发布

    相关文章

      网友评论

          本文标题:面试官:全局变量和局部变量变量名能否一样?

          本文链接:https://www.haomeiwen.com/subject/ptbtlktx.html