第一,两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。 第二,两者使用的范围不同。global关键...
nonlocal的作用于global类似,只不过global是在函数内部引用/修改全局变量,而nonloca是在内层函数中引用/修改外层函数定义的局部变量(非全局变量)。这种现象也成为闭包。 deffunc(): c=100 deffoo(): foriinrange(10):# 对外层函数的c变量进行修改 c+=1 foo() print(c) if__name__=='__main__': func...
[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...
1)任何一层子函数,若直接使用全局变量且不对其改变的话,则共享全局变量的值;一旦子函数中改变该同名变量,则其降为该子函数所属的局部变量; 2)global可以用于任何地方,声明变量为全局变量(声明时,不能同时赋值);声明后再修改,则修改了全局变量的值; 3)而nonlocal的作用范围仅对于所在子函数的上一层函数中拥有的...
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...
UnboundLocalError: local variable 'count' referenced before assignment 意思是说count为局部变量,在使用它之前没有被赋值。在函数内无法直接使用全局变量。 global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了。
在Python中,global和nonlocal的作用都是可以实现代码块内变量使用外部的同名变量,但其中是有很明显的区别的。 global global很明显就是声明代码块中的变量使用外部全局的同名变量 a = 1 def change(): global a a += 1 print("函数内部的a的值:", a) # 2 change() print("调用change函数后, 函数外部的...
1、在讲global和nonlcal前,先了解下全局变量和局部变量 例子1:不可变类型的全局和局部变量场景 # 全局变量a=1deffun1():# a此时是局部变量,数值类型是不可变类型,全局变量的a和局部变量的a地址不一样a=2print(a)fun1()print(a) image.png 例子2:可变类型的全局和局部变量场景 ...
L(Local):最内层,包含局部变量,比如一个函数/方法内部。 E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。