global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。 第二,两者使用的范围不同。global关键字可以用在任何地方,包括...
1)任何一层子函数,若直接使用全局变量且不对其改变的话,则共享全局变量的值;一旦子函数中改变该同名变量,则其降为该子函数所属的局部变量; 2)global可以用于任何地方,声明变量为全局变量(声明时,不能同时赋值);声明后再修改,则修改了全局变量的值; 3)而nonlocal的作用范围仅对于所在子函数的上一层函数中拥有的...
[1] Python 全局,局部和非局部变量(https://www.cainiaojc.com/python/python-global-local-nonlocal-variables.html) [2] Python Global 关键字(https://www.cainiaojc.com/python/python-global-keyword.html) [3] python关键字nonlocal和global的区别(https://www.jianshu.com/p/ab69b83a8d8a) [4] p...
Python的global和nonlocal你用对了吗?1.函数变量当函数内部出现了和函数外部名字一样的变量,在函数中...
L(Local):最内层,包含局部变量,比如一个函数/方法内部。● E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。● G(Global):当前脚本的最外层,比如当前...
nonlocal的作用于global类似,只不过global是在函数内部引用/修改全局变量,而nonloca是在内层函数中引用/修改外层函数定义的局部变量(非全局变量)。这种现象也成为闭包。 deffunc(): c=100 deffoo(): foriinrange(10):# 对外层函数的c变量进行修改 c+=1 ...
1、在讲global和nonlcal前,先了解下全局变量和局部变量 例子1:不可变类型的全局和局部变量场景 # 全局变量a=1deffun1():# a此时是局部变量,数值类型是不可变类型,全局变量的a和局部变量的a地址不一样a=2print(a)fun1()print(a) image.png 例子2:可变类型的全局和局部变量场景 ...
(1)global:在局部,引入全局变量 #(1)global:在局部,引入全局变量 a = 4 def b(): global a # 把外面的全局变量引入到局部 a = 20 # 创建一个局部变量,并没有去改变全局变量中的 a b() print(a) # 打印:20 (2)nonlocal:在局部,引入外层的局部变量 #(2)nonlocal:在局部,引入外层的局部变量 def...
python关键字global与nonlocal的区别 1、global关键字 使用场景:函数内修改函数外的变量值 错误示范: a = 1 def test(): print(a) a +=2 print(a) test() 1. 2. 3. 4. 5. 6. 结果报错: 在python中,函数内想要使用函数外的变量得先声明,不然程序会以为变量a是局部变量,如下,在函数内使用global...