乐趣区

关于python:面试官全局变量和局部变量变量名能否一样

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

答:全局变量和局部变量变量名能够一样

  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 主动公布

退出移动版