在python中,作用于代码全局的变量称为全局变量,一般在函数外定义。反之,在函数中被定义的变量称为本地变量,只作用于函数内部。在函数内,需要对全局变量进行变更,或者重定义时,需要用global对变量宣言。本文,具体对global的用法通过代码实例进行说明。
对于全局变量,可通过以下方式进行宣言。
global 变量名
或者在函数外,直接定义变量,则此变量即为全局变量。请看下图例1.
在例1中,首先定义了变量"vax",然后定义一个函数"test1",最后,执行函数"test1".因为"vax"定义在函数"test1"以外,所以变量"vax"为全局变量,在函数"test1"中访问变量"vax",并计算可得到最后的结果为4。
在函数中,可以访问全局变量,并使用其值。但是如果不对变量进行global宣言,则不会改变全局变量的值。如下图例2.
在例2中,首先定义了全局变量"vax",然后在函数"test2"中,定义了同样名称的变量"vax"。首先,执行函数"test2",此时使用函数内变量"vax",即本地变量,可以得到结果值为20+3=23。然后,输出函数外的变量"vax",即全局变量,得到结果为1。可知,全局变量并没有发生变化。那么,如果需要在函数内对全局变量的值进行变更时,应该怎么做呢?请看下图例3.
在例3中,在函数"test3"中,增加了" global vax"宣言语句。表示在函数中要使用全局变量"vax",并在下一语句被赋值为30。执行函数"test3",并再次输出全局变量"vax",可以看到全局变量"vax"的值被改为30。
可以用以下的格式,对多个变量同时进行全局变量宣言。
global 变量1,变量2,变量3
通过上例的例2和例3,我们知道字符串、数字类型是不能被在局部被修改的,除非使用global关键字。但是对于列表和字典对象,在局部不可以重新赋值但是可以追加要素值。请看下图例4。
首先定义了全局变量列表"lst_t",包括两个要素分别为"aa"和"bb"。然后在函数"test4"中对列表"lst_t"追加了要素"cc"。执行函数"test4",并输出全局变量"lst_t",可以看到列表"lst_t"的要素变为"aa","bb"以及"cc"。
同样,需要重新赋值时,需要用global关键字进行宣言。如下图例5。
可以看到,通过语句"global lst_t",重新定义了全局变量"lst_t",并重新赋值为"cc"。
本文,首先简单说明了全局变量和本地变量的概念及区别。然后通过实例,说明了用global 语句对全局变量进行宣言的方法。并且,说明了在局部对全局变量进行变更时,global语句的使用方法。最后,对于列表和字典等对象使用global的特殊用法。