python global用法_python3中nonlocal 和 global 的区别

刷题时,不止一次遇到需要声明全局变量或者改变上一层函数中变量的情形,总是搞不清global的用法,后来又遇到nonlocal,更混淆了。

便仔细找了一下两者的用法和区别,有篇文章讲解的非常详细,供参考:

Python中关键字global与nonlocal的区别

简单地总结:

1)任何一层子函数,若直接使用全局变量且不对其改变的话,则共享全局变量的值;一旦子函数中改变该同名变量,则其降为该子函数所属的局部变量;

2)global可以用于任何地方,声明变量为全局变量(声明时,不能同时赋值);声明后再修改,则修改了全局变量的值;

3)而nonlocal的作用范围仅对于所在子函数的上一层函数中拥有的局部变量,必须在上层函数中已经定义过,且非全局变量,否则报错。

你可能感兴趣的:(python,global用法)