打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(45)python少儿编程之闭包

(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就调用了全局变量,这是错误的

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

著作权归作者所有
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python基础【函数】
给妹子讲python-S01E19内嵌作用域与函数闭包
Python中命名空间与作用域使用总结
Python中的变量作用域总结
一篇文章学会 Python 中闭包与变量作用域
第22天:Python NameSpace & Scope
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服