global 全局变量的用法

说明:i 和foo()都为全局变量,i 是在模块文件顶层注册的,所以为全局变量,他能够在函数内部进行引用而不需要再特意声明是全局变量,且foo()函数也是全局变量

1.当没有局部变量时,print(i,'in foo()'),根据LEGB规则,打印的是全局变量;print(i,'global')也是全局变量

如下

i = 1
def foo():
    print(i,'in foo()')   #局部变量
print(i,'global')   #全局变量
foo()
print(i,'未定义')

#输出
1 global
1 in foo()
1

2.当设置局部变量时,print(i,'in foo()') 打印局部变量,print(i,'global'),打印全局变量,print(i,'未定义'),打印全局变量 1

i = 1
def foo():
    i=5
    print(i,'in foo()')   #局部变量
print(i,'global')   #全局变量
foo()
print(i,'未定义')

#输出
1 global
5 in foo()
1 未定义

3.当把局部变量设置成global 全局变量时,print(i,'in foo()'),打印的还是局部变量,print(i,'global'),没有变量,始终是def 之前定义的变量i=1;

 print(i,'未定义'),根据LEGB 规则,寻找全局变量,因全局变量设置为i =5,打印出来也是5

i = 1
def foo():
    global i
    i=5
    print(i,'in foo()')   #局部变量
print(i,'global')   #全局变量
foo()
print(i,'未定义')


#输出
1 global
5 in foo()
5 未定义
原文地址:https://www.cnblogs.com/sxwen/p/8029244.html