一引用
例 1
- a = 1
- def func():
- if 1 == a:
- print("a = %d" % a)
- if __name__ == '__main__':
- func()
运行结果:
a = 1
二修改
例 2
- 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 罢了
例 3
- 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: 1
说明: 加了 global 之后, func 中的 a 就是第一行定义的全局变量 a, 所以可成功修改值
三结论
若只是引用全局变量, 不需要加 global 关键字;
若要修改全局变量, 需要加 global 关键字
来源: http://www.jianshu.com/p/88b9db4e3705