example1.
全局变量不修改值,只是引用时,在哪里都可以直接引用
a=1
b=[2,3]
def func():
print a
print b
if __name__ == "__main__":
func()
输出:a=1 b=[2,3]
example2.
全局变量修改值,a=1
b=[2,3]
def func():
a=4
b[0]=1
print a
print b
if __name__ == "__main__":
func()
输出:a=4 b=[1,3]
该种情形下全局变量值被修改,在函数体内变为局部变量, 但b仍为全局变量
example3.
全局变量修改值,但引用时添加 global a 声明
a=1
b=[2,3]
def func():
global a
a=4
print a
print b
if __name__ == "__main__":
func()
输出:a=4 b=[2,3]
该种情形下全局变量值被修改,在函数体内仍为全局变量
example4.
全局变量修改值,但开始时添加 global a 声明
global a
b=[2,3]
def func():
global a
a=4
print a
print b
if __name__ == "__main__":
func()
输出:a=4 b=[2,3]
该种情形下a为全局变量
结论:引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。