首页 理论教育 Python基础教程:全局关键字和非局部关键字

Python基础教程:全局关键字和非局部关键字

时间:2023-11-16 理论教育 版权反馈
【摘要】:如果需要在函数内部修改全局作用域或外层嵌套作用域的变量时,可以使用global和nonlocal关键字。

Python基础教程:全局关键字和非局部关键字

如果需要在函数内部修改全局作用域或外层嵌套作用域的变量时,可以使用global和nonlocal关键字。

1.global关键字

如果想在函数内部修改全局变量,需要在函数内部使用global关键字进行声明,下面我们把程序进行修改,示例代码如下:

程序运行结果如下:

图5-16 global关键字

如图5-16所示,全局变量a和变量b,与fun函数内部的局部变量b,在不同的作用域。程序执行到第9行,LEGB查到全局作用域的变量a和变量b,输出结果为:a=10,b=20。由于在函数内部使用关键字global对全局变量a进行声明,在fun函数内部,根据LEGB原则,分别查到全局作用域的变量a和fun函数内部的作用域的变量b,输出结果为:a=1,b=2。当程序返回主程序后,LEGB查到全局作用域的变量a和变量b,输出结果为:a=1,b=20。

2.nonlocal关键字

使用nonlocal关键字可以在函数内部的作用域中修改嵌套作用域中的变量。例如:(www.xing528.com)

程序运行结果如下:

上述代码是一个函数的嵌套定义,其中fun为外层函数,fun_in为内层函数。fun函数中定义了一个变量a,在函数fun_in内部重新定义了变量a,两个变量的作用域不同,因此在fun函数中输出变量a的值为1。

若要修改外层函数fun中的变量a,则需要在fun_in函数内部使用nonlocal关键字对变量a声明,修改后的代码如下:

程序运行结果如下:

由运行结果可以看到,内层函数fun_in中查找到的是外层函数fun的变量a,成功修改了变量a的值,因此在fun函数中输出变量a的值为12。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈