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

2020-07-22  本文已影响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自动发布

上一篇下一篇

猜你喜欢

热点阅读