首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python nonlocal的用法_python nonlocal 的具体原理

很多文章都大概列了下nonlocal的具体用法,比如看到几篇文章写的 “nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量” 看完以后我感觉自己是懂了,但光从这句话来说还没完全理解它的真实含义...nonlocal def make_average(): series=[] def average(new_value): series.append(new_value) total = sum(series...closure__[0].cell_contents 里面存储series里的数据 但如果把series改为了int 类型的不可变类型在average里面尝试改变它的值时就会报错,这时候如何处理,就需要加nonlocal...,它的作用就是变量申明为自由变量 结论: 如果在内部函数中只是仅仅读外部变量,可以不在此变量前加nonlocal 如果在内部函数中尝试进行修改外部变量,且外部变量为不可变类型,则需要在变量前加nonlocal...,如果变量为可变类型,则不需要添加nonlocal 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

46730
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python Global和Nonlocal的用法

    nonlocal 和 global 也很容易混淆。简单记录下自己的理解。 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值。...nonlocal 只在闭包里面生效,作用域就是闭包里面的,外函数和内函数都影响,但是闭包外面不影响。 nonlocal 语句使列出的标识符引用除global变量外最近的封闭范围中的以前绑定的变量。...nonlocal语句中列出的名称与global语句中列出的名称不同,它们必须引用封闭范围中已经存在的绑定(无法明确确定应在其中创建新绑定的范围)。...'x' found ---- 使用nonlocal之前需要初始化变量 x = 0 def outer(): def inner(): nonlocal x x...'x' found ---- 不能在函数的外部函数里面声明nonlocal x = 0 def outer(): x = 1 nonlocal x def inner():

    36220

    Python中nonlocal的使用

    这时,nonlocal 关键字就发挥了它的作用。本文将详细探讨 nonlocal 的使用场景、工作原理以及一些实际应用示例,帮助读者更好地理解和运用这一特性。1.什么是 nonlocal?...2.nonlocal 的使用场景修改闭包中的变量:闭包是一种特殊的对象,它允许一个函数访问创建时的作用域中的变量。使用 nonlocal 可以在闭包的内层函数中修改这些变量。...通过使用 nonlocal,我们可以在函数内部维护状态变量,而不需要将它们作为参数在每次调用时传递。3.nonlocal 的工作原理在 Python 中,每个函数都有自己的命名空间,用于存储局部变量。...而 nonlocal 用于声明一个变量为非局部变量,即它指向的是最近的非全局作用域中的变量。简而言之,global 用于全局作用域,而 nonlocal 用于局部作用域。...7.结论nonlocal 是 Python 中一个强大的特性,它允许我们在嵌套函数中修改外部作用域的变量。通过本文的介绍,你应该对 nonlocal 有了更深入的理解。

    18410

    Python Global和Nonlocal的用法

    nonlocal 和 global 也很容易混淆。简单记录下自己的理解。 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值。...nonlocal 只在闭包里面生效,作用域就是闭包里面的,外函数和内函数都影响,但是闭包外面不影响。 nonlocal 语句使列出的标识符引用除global变量外最近的封闭范围中的以前绑定的变量。...nonlocal语句中列出的名称与global语句中列出的名称不同,它们必须引用封闭范围中已经存在的绑定(无法明确确定应在其中创建新绑定的范围)。...'x' found ---- 使用nonlocal之前需要初始化变量 x = 0 def outer(): def inner(): nonlocal x x...'x' found ---- 不能在函数的外部函数里面声明nonlocal x = 0 def outer(): x = 1 nonlocal x def inner():

    43110

    Python3 关键字nonlocal

    关键字nonlocal 在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。...为了解决这个问题,Python 3.x引入了nonlocal关键字,在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名。...如果想更改它,这里就要使用global关键字了 实例 关键字nonlocal的作用与关键字global类似,使用nonlocal关键字可以在一个嵌套的函数中修改嵌套作用域中的变量。...global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal...位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。

    80010

    Python: 关键字nonlocal和global的区别

    关键字global用于定义全局变量,而关键字nonlocal用于定义非局部变量。...本文在查阅相关资料的基础上,对局部变量、全局变量和非局部变量进行了介绍,还对关键字global和nonlocal的使用场景进行了梳理。...3 非全局变量 (1) 非全局变量,通过关键字nonlocal来定义。只在闭包里面生效,作用域就是闭包里面的,外函数和内函数都影响,但是闭包外面不影响。...(2) nonlocal的作用范围仅对于所在子函数的上一层函数中拥有的局部变量,必须在上层函数中已经定义过,并且不是非全局变量,否则报错。...= make_counter() print(test()) print(test()) 运行结果: 1 2 在函数counter()内,我们使用了nonlocal关键字创建了非局部变量。

    93720

    python2 nonlocal_python关键字及用法

    从当前作用域开始寻找变量,如果没找到就往上一层作用域寻找,没找到就再上一层…… 即:当前作用域局部变量->外层作用域变量->再外层作用域变量->……->当前模块全局变量->pyhton内置变量 global:全局变量 nonlocal...:外层嵌套函数的变量 使用总结: 1、局部作用域改变全局变量用global, global同时还可以定义新的全局变量 2、内层函数改变外层函数变量用nonlocalnonlocal不能定义新的外层函数变量...,只能改变已有的外层函数变量 同时nonlocal不能改变全局变量 一、没有关键字 a = 10 # a1 当前模块全局变量 def outer(): a = 9 # a2 当前outter...寻找 a = 10 # a1 当前模块全局变量 def outer(): def inner(): nonlocal a # 在当前作用域外层即outer局部作用域中没找到outer...局部变量a,outer外层为全局作用域,nonlocal不继续寻找,报错 a = 8 print(a) inner() print(a) outer()

    27020

    【globlal与nonlocal和闭包函数、装饰器、语法糖】

    一、global与nonlocal 1、global 在py文件中,一般无法调用函数体内变量名,而global可使函数体代码内的变量名直接在函数体外部调用,条件是在需要调用的代码体中使用global 调用需要的变量名...name print(name) ------------------------------------------------------------------------ zhangzhang 2、nonlocal...在函数嵌套使用时,通常在父代码体中无法调用子代码中变量名, 而nonlocal的作用是,可以在父代码中直接调用子代码中的变量名,条件是需要在子代码中使用nonlocal 调用需要的变量名 未使用nonlocal...# 函数外层绑定一个变量名 name = 'kangkang' # 代码体内部再次定义一段函数体 def subcoat(): # 在函数体内层使用nonlocal...,调用变量名 nonlocal name # 内层中绑定变量名 name = 'zhangzhang' # 调用内层函数 subcoat

    11110

    Python 新手突破瓶颈指南:关键字 nonlocal 与 global 理解和应用

    nonlocal 和 global 关键字是用于管理变量作用域的两个重要工具。理解它们的用法对编写高效、清晰的代码至关重要。...nonlocal 关键字的工作机制 nonlocal 关键字用于声明变量为最近外层函数的局部变量。它用于嵌套函数中,使内层函数能够修改外层函数的局部变量。...底层逻辑 从底层逻辑来看,nonlocal 关键字让嵌套函数在其外层函数的局部作用域中查找变量。当找到目标变量时,它会将其重新绑定到新的值。...实现闭包 nonlocal 关键字常用于闭包中,使内层函数能够修改外层函数的状态。...控制循环 在需要在嵌套循环中使用内层循环变量控制外层循环时,nonlocal 可以发挥作用。

    12210
    领券