1.使用场景
- 只有全局变量在函数中需要修改的时候,需要加global关键字进行声明
#使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加关键字global
#定义全局变量
a=5
b=3
def fun():
a=3
b=2
print(a+b)#--->5
fun()
print(a+b)#---->8
#定义全局变量
a=5
b=3
def fun():
global a
a=3
global b
b=2
print(a+b)#--->5
fun()
print(a+b)#---->5
2.底层逻辑
- 每个python函数拥有对应的globals字典,该字典与函数所属模块的dict字典完全相同,一个模块中每个函数的 globals 字典变量都是模块 dict 字典变量的引用。函数的全局变量也会从这个字典中获取。当使用关键字global后,就会去该字典中查找全局变量,并获取到对应的值
#定义全局变量
a=5
b=3
def fun():
global a
a=3
fun.__globals__['b']=2
print(a+b)#--->5
# fun.__globals__['b']=2
fun()
print(a+b)#---->5