在阅读本文之前,请确保您对Python的全局变量、局部变量和非局部变量有一定的基础。global关键字介绍在Python中,global关键字允许您修改当前作用域之外的变量。它用于在局部上下文中创建全局变量和更改变量。global关键字的规则在Python中,global关键字的基本规则如下:当我们在函数中创建一个变量时,它默认是局部的。当我们在函数外定义一个变量时,它默认是全局的。您不必使用global关键字。我们使用global关键字在函数中读写全局变量。在函数外使用global关键字没有任何效果。让我们举一个使用global关键字的例子(withexamples)。例1:从函数内部访问全局变量c=1#globalvariabledefadd():print(c)add()运行程序,输出为:1但是我们可能有一些场景需要修改全局变量函数内部的变量。例2:修改函数内部的全局变量c=1#全局变量defadd():c=c+2#将c增加2print(c)add()运行程序,输出显示错误:UnboundLocalError:赋值前引用局部变量'c'这是因为在函数中,我们只能访问全局变量而不能修改它。解决方案是使用global关键字。例3:在一个函数中使用global改变全局变量c=0#globalvariabledefadd():globalcc=c+2#c增加2print("Insideadd():",c)add()print("Inmain:",c)运行程序,输出为:Insideadd():2Inmain:2在上面的程序中,我们在add()函数中定义了c作为全局关键字。然后,我们将变量c递增2,即c=c+2。之后,我们调用了add()函数。***,打印全局变量c。可以看到,函数外的全局变量也发生了变化,c=2。Python模块中的全局变量在Python中,我们创建了一个单独的模块config.py来保存全局变量,并在同一个程序中的Python模块之间共享信息。下面介绍如何通过Python模块共享全局变量。示例4:在Python模块中共享全局变量创建config.py文件以存储全局变量a=0b="empty"创建update.py文件以更改全局变量importconfigconfig.a=10config.b="alphabet"创建main.py文件来测试其值的变化importconfigimportupdateprint(config.a)print(config.b)运行main.py,输出为:10alphabet上面,我们创建了三个文件:config.py、update.py和main。py。全局变量a和b保存在config.py模块中。在update.py文件中,我们导入config.py模块,更改a和b的值。此外,在main.py文件中,我们导入了config.py和update.py模块。***,我们打印并测试全局变量的值,是否被改变。嵌套函数中的全局变量以下是如何在嵌套函数中使用全局变量。示例5:在嵌套函数中使用全局变量deffoo():x=20defbar():globalxx=25print("Beforecallingbar:",x)print("Callingbarnow")bar()print("Aftercallingbar:",x)foo()print("xinmain:",x)输出是:Beforecallingbar:20CallingbarnowAftercallingbar:20xinmain:25在上面的程序中,我们A全局变量在嵌套函数bar()中声明。在foo()函数中,变量x没有global关键字的作用。在调用bar()之前和之后,变量x取局部变量的值,x=20。在foo()函数之外,变量x将取函数bar()中的值,即x=25。这是因为在bar()中,我们使用x的全局关键字创建了一个全局变量(局部作用域)。如果我们在bar()函数内部进行任何修改,这些修改将出现在本地范围之外,即foo()。
