python nonlocal关键字「建议收藏」

python nonlocal关键字「建议收藏」pythonnonlocal关键字non-local非局部变量如果两个嵌套函数,一个函数A里面又包含了一个函数B,那么对于B中的名称来说A中的作用域就为nonlocal作用域:enclosing作用域—外层非全局作用域如果要在内层函数中修改外层变量,则需要用到nonlocal关键字defouter():num=10print(num)definner():nonlocalnum#内层函数未定义此变量n

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

python nonlocal 关键字

non – local 非局部变量
如果两个嵌套函数,一个函数A里面又包含了一个函数B,那么对于B中的名称来说A中的作用域就为nonlocal
作用域:enclosing作用域 —外层非全局作用域
如果要在内层函数中修改外层变量,则需要用到 nonlocal 关键字



def outer():
    num = 10
    print(num)
    def inner():
        nonlocal num
        # 内层函数未定义此变量num 通过关键字nonlocal 直接使用此变量
        print(num)
        num = 100
        print(num)

    inner()
    print(num)
    # 内层函数对变量的改变 会作用到外层


outer()


执行结果
在这里插入图片描述

如果未声明直接使用会报错
在这里插入图片描述

代码来源—-菜鸟教程
https://www.runoob.com/python3/python3-namespace-scope.html

ps:修改全局变量,不是必须先使用global进行声明才行

在一个函数中对全局变量进行修改的时候,倒是是否需要使用global进行说明要看是否对全局变量的执行执行进行了修改
如果修改了执行,让全局变量执行了一个新的地方,那么必须使用global,如果,仅仅是修改了指向的空间中的数据,此时不用必须使用global

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197653.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月30日 下午6:15
下一篇 2025年8月30日 下午6:43


相关推荐

  • 做一个“代码模块”交易的网站

    做一个“代码模块”交易的网站

    2021年9月12日
    48
  • 模仿学习–技术综述[通俗易懂]

    模仿学习–技术综述[通俗易懂]概念:局限性:2.1数据的可获得性影子模式可以有效的解决数据的可获得性,但是其中的数据也包括了不值得提倡的司机行为;2.2模型的有效性端到端的特性:1)可解释性较差;可解释性上刚刚有所进展(可解释机器学习?-文档)2)难以在中间过程中,接收信息和指令;应用方式:1)基于规则的规划、控制模块,还是基础的功能实现方案;2)强化学习、模仿学习,作为规划、控制模块的备份方案,在极端场景下-connercase或规则无法覆盖的场景,能够有效的实现相应功能模块。论文及学习..

    2025年12月9日
    4
  • mysql的反引号

    mysql的反引号mysql 的表名和字段名为何加上反引号 mysql 的反引号 在使用 mysql 数据库时 用第三方连接工具连接 经常需要导出表结构和数据等 但是在导出的语句中 表和表中的字段都用 table 反引号包裹 Tablestructu

    2026年3月18日
    2
  • c++中CreateEvent函数「建议收藏」

    c++中CreateEvent函数「建议收藏」http://blog.csdn.net/chenyujing1234/article/details/8572921函数原型:[cpp] viewplain copyHANDLE CreateEvent(    LPSECURITY_ATTRIBUTES lpEventAttributes, // SD    BO

    2022年7月13日
    18
  • KEIL 5 pack离线包 Stm32f1/f2/f3/f4

    KEIL 5 pack离线包 Stm32f1/f2/f3/f4keil5pack 离线包安装 安装过 keil5 软件后 直接双击 pack 离线包即可 F1pack 包 https keilpack azureedge net pack Keil STM32F1xx DFP 2 3 0 packF2pack 包 https keilpack azureedge net pack Keil STM32F2xx DFP 2 9 0 packF3pa

    2026年3月20日
    2
  • 什么是2MSL

    什么是2MSL转自 什么是 2MSL 保存在此以学习 MSL 是 MaximumSegme 英文的缩写 中文可以译为 报文最大生存时间 他是任何报文在网络上存在的最长时间 超过这个时间报文将被丢弃 因为 tcp 报文 segment 是 ip 数据报 datagram 的数据部分 具体称谓请参见 数据在网络各层中的称呼 一文 而 ip 头中有一个 TTL 域 TTL 是 timetolive 的缩写 中文可

    2026年3月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号