问:全局变量和局部变量变量名能否一样?
答:全局变量和局部变量变量名可以一样
在函数内可以访问全局变量(
foo0
),但无法直接修改全局变量(foo3
)函数内重新定义一个和全局变量同名的局部变量(
foo1
)也是可以的,但是局部变量和全局变量的作用域不同,不互相影响。假如想要修改全局变量,需要用到
global
关键字(foo2
)对于
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自动发布