Python global使用

Python global使用教程

Python 中的 全局变量 默认是可以在所有的 函数 内访问的,但是,如果在函数中定义了与全局变量同名的变量时,就会发生局部变量隐藏了全局变量的情形。

如果局部变量隐藏了全局变量,那么当我们再次访问全局变量时,程序会报错,会说找不到该变量,因为,该全局变量被局部变量隐藏了。

Python变量重名详解

语法

varname = value def func(): print(varname) varname = value2 func() print(varname)

说明

首先,我们定义了一个全局变量 varname,接着,我们定义了一个函数 func,同时,在函数 func 里面,我们首先打印变量 varname,接着再次给变量 varname 赋值。

最后,我们调用 func 函数,并使用 print 打印全局变量 varname 的值,此时程序报错。因为,我们在函数 func 里面定义的局部变量 varname 隐藏了全局变量 varname。

因此,在函数 func 里面打印的 varname 被当成了局部变量。

Python global解决变量重名

当局部变量与全局变量重名时,我们可以在函数内部使用 global 关键字来说明,我们在函数内部使用的是全局变量,而不是再次定义一个局部变量。

案例

Python局部变量和全局变量重名

Python 局部变量和全局变量重名

print("嗨客网(www.haicoder.net)") site = "HaiCoder" def func(): print("In Func Site =", site) site = "haicoder" print("Global Site =", site)

程序运行后,控制台输出如下:

40_python global.png

首先,我们定义了一个全局变量 site,接着,我们定义了一个函数 func,同时,在函数 func 里面,我们首先打印变量 site 的值,接着再次给变量 site 赋值。

最后,我们使用 print 打印全局变量 site 的值,输出了全局变量 site 的值,此时程序是正确的。

Python局部变量和全局变量重名

Python 局部变量和全局变量重名

print("嗨客网(www.haicoder.net)") site = "HaiCoder" def func(): print("In Func Site =", site) site = "haicoder" func() print("Global Site =", site)

程序运行后,控制台输出如下:

41_python global.png

首先,我们定义了一个全局变量 site,接着,我们定义了一个函数 func,同时,在函数 func 里面,我们首先打印变量 site 的值,接着再次给变量 site 赋值。

最后,我们调用函数 func,此时程序报错,理论上我们在 func 函数里面第一次打印使用的应该是全局变量 site,但实际上程序却把 func 函数的第一次打印使用的变量定义为了局部变量。

Python局部变量和全局变量重名

Python 局部变量和全局变量重名

print("嗨客网(www.haicoder.net)") site = "HaiCoder" def func(): print("In Func Site =", globals()["site"]) site = "haicoder" func() print("Global Site =", site)

程序运行后,控制台输出如下:

42_python global.png

首先,我们定义了一个全局变量 site,接着,我们定义了一个函数 func,同时,在函数 func 里面,我们首先使用 globals 关键字访问变量 site 的值,接着再次给变量 site 赋值。

最后,我们调用函数 func,此时程序正常输出了全局变量的 site 的值,而且,在 func 函数里面最后赋值的 site 变量也是局部变量而不是全局变量 site。

Python局部变量和全局变量重名

Python 局部变量和全局变量重名

print("嗨客网(www.haicoder.net)") site = "HaiCoder" def func(): global site print("In Func Site =", site) site = "haicoder" func() print("Global Site =", site)

程序运行后,控制台输出如下:

43_python global.png

我们在函数内部,可以直接使用 global 关键字,表明我们函数内部使用的变量是全局变量,而不是我们先定义局部变量。

Python global使用教程总结

Python 中的全局变量默认是可以在所有的函数内访问的,但是,如果在函数中定义了与全局变量同名的变量时,就会发生局部变量隐藏了全局变量的情形。

如果局部变量隐藏了全局变量,那么当我们再次访问全局变量时,程序会报错,会说找不到该变量,因为,该全局变量被局部变量隐藏了。

当局部变量与全局变量重名时,我们可以在函数内部使用 global 关键字来说明,我们在函数内部使用的是全局变量,而不是再次定义一个局部变量。