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

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

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

  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自动发布

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容