a = 1
def func():
if 1 == a:
print("a = %d" % a)
if __name__ == '__main__':
func()
运行结果:
a = 1
a = 1
def func():
a = 2
print ("in func a:", a)
if __name__ == '__main__':
print("before func a:", a)
func()
print("after func a:", a)
运行结果:
before func a: 1
in func a: 2
after func a: 1
说明: 从程序运行结果可以看出,全局变量a的值,并没有成功被修改为2. 这是因为,func()中的a,是一个局部变量,是在新的内存区域生成的一个新对象,只是名字也叫a罢了。
a = 1
def func():
global a
a = 2
print ("in func a:", a)
if __name__ == '__main__':
print("before func a:", a)
func()
print("after func a:", a)
运行结果:
before func a: 1
in func a: 2
after func a: 2
说明:加了global之后,func中的a就是第一行定义的全局变量a,所以可成功修改值
若只是引用全局变量,不需要加global关键字; 若要修改全局变量,需要加global关键字。