L(Local):最内层,包含局部变量,比如一个函数/方法内部。 E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。 G(Global):当前脚本的最外层,比如当前模块的全局变量。
Python 中的 global 和 nonlocal 关键字在变量作用域和值传递方面发挥着重要作用。global 关键字用于在函数内部声明全局变量,使得函数内部可以访问和修改全局变量的值。而 nonlocal 关键字则用于在嵌套函数中声明外部嵌套作用域中的变量,使得内部函数可以访问和修改外部函数中的变量。
nonlocal: 在局部寻找外层函数中离他最近的那个变量 globals() 查看全局中的内容 locals() 查看当前作用域中的内容 1、global的使用: #全局变量本身就是不安全的, 不能随意修改, 可以使用闭包a = 10deffunc():""":return: global的作用: 1. 可以把全局中的内容引入到函数内部 2. 在全局创建一个变量"""g...
使用nonlocal x += 1 print(x) return innerfunc = outer()func()#2月图文动态激励...
在Python编程中,变量的作用域决定了变量的可访问性和生命周期。nonlocal和global关键字是用于管理变量作用域的两个重要工具。理解它们的用法对编写高效、清晰的代码至关重要。 global关键字的工作机制 global关键字用于声明函数内部的变量为全局变量,即使在函数内部对其进行赋值,该变量也会影响到全局作用域中的同名变量。
一、global global关键字用来在函数或其他局部作用域中使用全局变量 1.1 如果局部要对全局变量修改,而不使用global关键字 count =0defglobal_test(): count+= 1print(count) global_test() 会出现如下错误: UnboundLocalError: local variable 'count' referenced before assignment ...
UnboundLocalError: local variable 'count' referenced before assignment 意思是说count为局部变量,在使用它之前没有被赋值。在函数内无法直接使用全局变量。 global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了。
若在函数作用域中需要修改全局作用域或外层嵌套作用域中的变量,则需要使用global和nonlocal关键字。接下来,分别对关键字global和nonlocal的作用进行介绍。 1.global关键字 global关键字用于在函数作用域中修改全局变量。假设现在有一个test函数,其外部定义了一个全局变量a,其内部对全局变量a进行重新赋值,示例代码如下:...
1、在讲global和nonlcal前,先了解下全局变量和局部变量 例子1:不可变类型的全局和局部变量场景 # 全局变量a=1deffun1():# a此时是局部变量,数值类型是不可变类型,全局变量的a和局部变量的a地址不一样a=2print(a)fun1()print(a) image.png 例子2:可变类型的全局和局部变量场景 ...
nonlocal的作用于global类似,只不过global是在函数内部引用/修改全局变量,而nonloca是在内层函数中引用/修改外层函数定义的局部变量(非全局变量)。这种现象也成为闭包。 deffunc(): c=100 deffoo(): foriinrange(10):# 对外层函数的c变量进行修改 c+=1 ...