global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。 第二,两者使用的范围不同。global关键字可以用在任何地方,包括...
global影响全局作用域。 nonlocal影响最近的外层函数作用域。 使用场景: global多用于模块级别的全局变量。 nonlocal多用于函数嵌套和闭包。 五、注意事项与最佳实践 减少使用global: 在大型项目中,频繁使用global可能导致难以调试的问题。尽量通过函数参数和返回值来传递和修改数据。 谨慎使用nonlocal: nonlocal的使用应...
1)任何一层子函数,若直接使用全局变量且不对其改变的话,则共享全局变量的值;一旦子函数中改变该同名变量,则其降为该子函数所属的局部变量; 2)global可以用于任何地方,声明变量为全局变量(声明时,不能同时赋值);声明后再修改,则修改了全局变量的值; 3)而nonlocal的作用范围仅对于所在子函数的上一层函数中拥有的...
在Python中,global和nonlocal的作用都是可以实现代码块内变量使用外部的同名变量,但其中是有很明显的区别的。 global global很明显就是声明代码块中的变量使用外部全局的同名变量 a = 1 def change(): global a a += 1 print("函数内部的a的值:", a) # 2 change() print("调用change函数后, 函数外部的...
L(Local):最内层,包含局部变量,比如一个函数/方法内部。 E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。
nonlocal的作用于global类似,只不过global是在函数内部引用/修改全局变量,而nonloca是在内层函数中引用/修改外层函数定义的局部变量(非全局变量)。这种现象也成为闭包。 deffunc(): c=100 deffoo(): foriinrange(10):# 对外层函数的c变量进行修改 c+=1 ...
Python的global和nonlocal你用对了吗?1.函数变量当函数内部出现了和函数外部名字一样的变量,在函数中...
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...