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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • django配置文件详解_django实时读取日志

    django配置文件详解_django实时读取日志前言django框架的日志通过python内置的logging模块实现的,既可以记录自定义的一些信息描述,也可以记录系统运行中的一些对象数据,还可以记录包括堆栈跟踪、错误代码之类的详细信息。log

    2022年7月31日
    9
  • 手机端禁止默认长按复制功能[通俗易懂]

    手机端禁止默认长按复制功能[通俗易懂]若要将全部的文字都取消长按复制,只需在css样式中加入如下代码:*{-webkit-touch-callout:none;/*系统默认菜单被禁用*/-webkit-user-select:none;/*webkit浏览器*/-khtml-user-select:none;/*早期浏览器*/-moz-user-select:none;/*火狐*/-ms-use

    2022年9月28日
    4
  • Authentication failure. Retrying – 彻底解决vagrant up时警告

    Authentication failure. Retrying – 彻底解决vagrant up时警告

    2022年2月9日
    95
  • java 堆栈的声明_Java 堆栈[通俗易懂]

    java 堆栈的声明_Java 堆栈[通俗易懂]Java堆栈堆栈是一种线性数据结构,用于存储对象的集合。它基于先进先出(LIFO)。Java集合框架提供了许多接口和类来存储对象的集合。其中之一是Stack类,它提供了不同的操作,例如推,弹出,搜索等。在本节中,我们将讨论JavaStack类,其方法和实现在Java中的堆栈数据结构程序。但是在转到JavaStack类之前,请先快速了解堆栈的工作原理。堆栈数据结构具有两个最重要的操作,分别…

    2022年7月7日
    21
  • Asp.net Session 与Cookie的应用

    写程序的很多人都知道的,Session是服务器端的东西而Cooike是客户端的东西。因为B/S模式是无状态模式,它们的应用都是要存储客户端的某些登录或是加密的信息。Session存在于服务器端,当然

    2021年12月27日
    39
  • mysql 修改 表名 列名 为小写

    mysql 修改 表名 列名 为小写表名改为小写SELECTCONCAT(‘ALTERTABLE’,table_name,’RENAME’,LOWER(table_name),”;”)ASstatementFROMinformation_schema.TABLESWHEREtable_schema=’数据库’ANDtable_nameLIKE’表名%’;列名改为小写SELECTconcat(‘altertable’,TABLE_…

    2022年5月31日
    31

发表回复

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

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