L(Local):最内层,包含局部变量,比如一个函数/方法内部。 E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。 G(Global):当前脚本的最外层,比如当前模块的全局变量。
x=10defmodify_global():global x x=20modify_global()print(x)# 输出:20 在这个例子中,global关键字声明x变量为全局变量,因此在modify_global函数中修改x的值会直接影响全局作用域中的x。 底层逻辑 从底层逻辑来看,当我们在函数内部使用global关键字声明一个变量时,Python解释器会将该变量绑定到全局作用域。此时...
inner: nonlocal outer: local 这是因为global关键字的使用让我们在inner()函数(局部作用域)内声明了一个global变量,故如果我们在inner()函数内做任何修改,则修改的结果只会在局部作用域(也即outer()函数)之外出现。此外,nonlocal还可以用来构建如下列所示的闭包函数func(参见我的博客《Python技法4:闭包和保存自由...
使用nonlocal x += 1 print(x) return innerfunc = outer()func()#2月图文动态激励...
本文将详解nonlocal与global的用法、适用场景及其区别,并通过实际代码案例帮助理解。 一、作用域基础知识 在开始讨论nonlocal和global之前,了解 Python 的作用域规则是很有必要的。Python 中的作用域遵循LEGB规则: Local(局部作用域):当前函数内部。 Enclosing(闭包函数外部作用域):外层(非全局)函数作用域。
global关键字用来在函数或其他局部作用域中使用全局变量。nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。
L(Local):最内层,包含局部变量,比如一个函数/方法内部。● E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。● G(Global):当前脚本的最外层,比如当前...
def outer(): x = 32 def inner(): nonlocal x # 在内部函数中想要修改外部函数中的变量时,使用nonlocal x += 1 print(x) return inner func = outer() func() 4.总结 在函数中,如果内部使用了与外部同名的变量,则不会修改外部变量的值。如果想在函数内部修改外部变量,需要使用global关键字。当在闭包...
python moderngl对比opengl python中global和nonlocal区别,前言终于下定决心学习Python了。既然从头开始,就需要认认真真。首先需要说的是,我是初学Python,这篇文章只是用于展示global和nonlocal关键字的区别,是很简单的知识点,如果你已经学过,可以绕道。因为不经常写
global x x += 1 print("函数内部 x 的值:", x) increment_global() print("函数外部 x 的值:", x) 在上面的示例中,使用global关键字声明了变量x是全局变量,因此在increment_global函数内部可以对其进行修改。 nonlocal 关键字 与global关键字不同,nonlocal关键字用于在嵌套函数中声明外部嵌套作用域中的变...