问:全局变量和局部变量变量名是否一样?
答:全局变量和局部变量变量名能够一样
- 在函数内能够拜访全局变量(
foo0
),但无奈间接批改全局变量(foo3
) - 函数内从新定义一个和全局变量同名的局部变量(
foo1
)也是能够的,然而局部变量和全局变量的作用域不同,不相互影响。 - 如果想要批改全局变量,须要用到
global
关键字(foo2
) - 对于
list
这种数据类型,状况和string
又不太一样,函数内能够管制全局变量的元素(foo4
)
a = 2b = [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主动公布