E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。 G(Global):当前脚本的最外层,比如当前模块的全局变量。 B(Built-in): 包含了内建的变量/关键字等,最后被搜索。
nonlocal 和global 关键字是用于管理变量作用域的两个重要工具。理解它们的用法对编写高效、清晰的代码至关重要。 global 关键字的工作机制 global 关键字用于声明函数内部的变量为全局变量,即使在函数内部对其进行赋值,该变量也会影响到全局作用域中的同名变量。 基本示例 代码语言:javascript 复制 x = 10 def ...
一、global与nonlocal 1、global 在py文件中,一般无法调用函数体内变量名,而global可使函数体代码内的变量名直接在函数体外部调用,条件是在需要调用的代码体中使用global 调用需要的变量名 未使用global情况: # 在外部绑定一个变量名 name = 'kan
c=1deftest3():c=2deftest4():# 此时这里c是局部变量# 声明c是外层函数test3的局部变量nonlocalcprint("c:",c)# 这里又重新声明局部变量,python会报错,搞不清楚这里的c到底是局部变量还是全局变量了c=3test4()print(c)test3()print(c) image.png 和global比较 c=1deftest3():c=2deftest4():# ...
与global关键字不同,nonlocal关键字用于在嵌套函数中声明外部嵌套作用域中的变量。当在一个函数内部定义了另一个函数,并且希望内部函数可以访问外部函数的变量时,就需要使用nonlocal关键字。 示例代码: def outer_function(): y = 20 def inner_function(): ...
(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.函数变量当函数内部出现了和函数外部名字一样的变量,在函数中...
L(Local):最内层,包含局部变量,比如一个函数/方法内部。● E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。● G(Global):当前脚本的最外层,比如当前...
global将一个变量变为全局变量 nonlocal改变最近的变量,又不是全局作用。 1.global 在python中,当引用一个变量的时候,对这个变量的搜索按找本地作用域(Local)、嵌套作用域(Encolosing function locals)、全局作用域(Global)、内置作用域(builtins模块)的顺序来进行的,即所谓的LEGB规则。
nonlocal的作用于global类似,只不过global是在函数内部引用/修改全局变量,而nonloca是在内层函数中引用/修改外层函数定义的局部变量(非全局变量)。这种现象也成为闭包。 deffunc(): c=100 deffoo(): foriinrange(10):# 对外层函数的c变量进行修改 c+=1 ...