分享

(45)python少儿编程之闭包

 xiaoyimin 2019-11-20

(45)python少儿编程之闭包

疾病早预防
2019-11-19 08:51:37
  • 自由变量:未在本地作用域中定义的变量。例如定义在内存函数外的外层函数的作用域中的变量
  • 闭包:出现在嵌套中,指的是内层函数引用到了外层函数的自由变量,就形成了闭包。
  • 如图,列表c就是自由变量,在inc函数中,我们发现直接+1 ,竟然没有报错,此时c[0]只是引用的元素,没有重新定义其c变量本身,此时就形成了闭包,当我们调用了两次foo(),这个引用元素就加了2次1,等于了12.
  • 这里又出现了一个问题,这里的c只是引用类型的,只修改元素的情况下确实可以做到闭包,那我们想对普通变量使用闭包呢?这里要引出新的关键字nonlocal关键字

nonlocal关键字

  • 使用了nonlocal关键字,将变量标记在上级的局部作用域中定义,但不能在全局作用域定义
  • 如图,在counter()的内部函数inc()里面使用了nonlocal即可,如果在counter下面调用就是错误的,如下图
  • 此时a就调用了全局变量,这是错误的

每天的内容简单点,轻松点!

著作权归作者所有

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多