nonlocal 关键字 作用:用来修改局部变量

  • nonlocal 修改局部变量时,采用LEGB原则

    1. 跳出当前函数这一层空间,到上一层寻找
    2. 如果上一层不存在该变量,继续向上一层寻找
    3. 如果最顶级也找不到了,直接报错
    • 当前函数空间如果找不到,跳出这一层,到上一层寻找 [nonlocal 修改局部变量]

      def outer():a = 1def inner():nonlocal a               # 用来修改当前空间上一层的局部变量a = 2print(a)inner()print(a)
      outer()# 21
      # 12
      # 11
      # 22
      
    • 如果上一层不存在该变量,继续向上一层寻找

      a = 300
      def outer():a = 200def inner():a = 100def smaller():nonlocal aa = 400smaller()print(a)inner()print(a)
      outer()
      print(a)                          # 400 200 300 升级
      a = 300
      def outer():a = 200def inner():def smaller():nonlocal aa = 400smaller()print(a)inner()print(a)
      outer()
      print(a)                        # 400 400 300
      
    • 如果最顶级也找不到了,直接报错

      a = 200          # 全局变量,nonlocal无法更改全局变量,只能该局部变量,global关键字更改全局变量
      def outer():def inner():def smaller():nonlocal aa = 400smaller()print(a)inner()print(a)
      outer()                          # error 报错
      
    • 不依赖局部nonlocal ,如何改变局部变量呢? 通过列表~

      def outer():lst = [1,2,3]                # 定义一个列表def inner():lst[-1] = 100     inner()print(lst)
      outer()
      

Python 之nonlocal 关键字相关推荐

  1. python local global_python global与nonlocal关键字

    函数作用域 a = 1 print("函数outer调用之前全局变量a的内存地址: ", a , id(a)) def outer(): a = 2 print("函数o ...

  2. python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字

    本遍文章对global关键字和nonlocal关键字进行补充,这两个关键字在以后做python开发的时候,能不用尽量别用!最好别用!总会出现让你意想不到的后果... 1.先说第一种global,不管在 ...

  3. 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用

    课程起源 有一次在工作中编写python工具时,遇到一个 问题:从配置文件读取变量A后,无法在内存中把A的值改变成新的内容.为了解决"更新内存中变量"的这个问题,查找了一些帖子,结 ...

  4. python闭包技巧_案例详析:Python闭包与nonlocal关键字

    在廖雪峰的官网上看到一个很有意思题目.关于闭包的,有兴趣的朋友可以看一下, 做一下这个题目,当然需要一点闭包的知识. 下面我简述一下: 利用闭包返回一个计数器函数,每次调用它返回递增整数. # 修改下 ...

  5. 滚雪球学 Python 之作用域下的 global 和 nonlocal 关键字

    橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 十.global 和 nonlocal 作用域 10.1 ...

  6. python中nonlocal是什么意思_Python中nonlocal关键字

    在这篇文章中介绍了"Python的闭包与nonlocal"的用法,因为nonlocal是在Python3.0中新增的关键字,python2.x不提供支持,文中提出在Python2. ...

  7. python 函数嵌套和nonlocal关键字

    python函数可以嵌套使用,使用也比较简单,举个栗子: def outer():print("outer")def inner():print("inner" ...

  8. python local_Python3中 对local和nonlocal 关键字的改善认识(新手向)

    nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量. nonlocal用于声明,修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,如下实例: #!/usr/bi ...

  9. python nonlocal的用法_python中的global和nonlocal关键字怎么使用

    global 和 nonlocal关键字 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. 以下实例修改全局变量 num: #!/usr/bin/python3 ...

最新文章

  1. IIS 承载的WCF服务失败
  2. Android动态加载技术三个关键问题详解
  3. Go语言集合(Map)
  4. java基础----IO序列化Serializable
  5. 【bzoj5107】[CodePlus2017]找爸爸 dp
  6. JSP中 input type 用法
  7. dw个人介绍网页制作_DW网页制作,傻瓜级教学来了!
  8. SPSS 的安装与概貌-第一章
  9. 用 Python 自动生成快闪文字视频
  10. FireEye 网络攻击危害红队安全工具
  11. Git-LFS:大文件也有了版本管理
  12. 【大模型迁移 2022】Exploring Visual Prompts for Adapting Large-Scale Models
  13. 手机wifi java_Android中使用WIFI来连接ADB
  14. 最简单的飞机大战小游戏(C语言实现)
  15. 到站提醒APP应用 隐私声明
  16. CSDN20181219博客黑板报
  17. 深度学习,分割后处理之通过连通成分分析去除假阳性区域,提高分割准确度
  18. 交互设计:依据用户体验要素知识点,进行APP的分析和改良设计。
  19. MySQL登录、访问、退出操作
  20. 《Photoshop修色圣典——PPW专业照片修正流程与技巧》—第1章PPW流程

热门文章

  1. apple企业开发账号的用途
  2. CF-IOT云端通讯协议
  3. Android管理WIFI
  4. JS拼接字符串的效率
  5. macOS 修改mysql账号密码
  6. mac切换jdk版本
  7. WDP(the winner determination problem)问题
  8. python 中setattr()函数
  9. html5实现货币格式,纯js实用格式化货币插件
  10. C++ 构造函数和析构函数 详解