前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python基础—闭包

python基础—闭包

作者头像
dogfei
发布2020-07-31 11:38:07
3590
发布2020-07-31 11:38:07
举报
文章被收录于专栏:devops探索devops探索

闭包

  • 自由变量: 未在本地作用域中定义的变量,例如是定义在内层函数外的一个变量
  • 闭包: 就是一个概念,出现在嵌套函数中,指的是内层函数引用到了外层函数的自由变量,就形成了闭包

看一个示例:

内层函数我们的语句块为: c[0] += 1 ,即 c[0] = c[0] + 1 ,这里并没有赋值,而是对外层函数中的一个列表做的一个引用

这里便是闭包,c便是一个自由变量,便是定义在内层函数外的一个变量,且在内层函数中去引用,而不是重新赋值

而我们即使在外部重新定义了c,但是这个函数调用的却是一个自由变量,外部并不可见

再看一个示例:

这个函数肯定会报错,因为我们对count重新赋值,所以我们可以使用global将count定义成全局变量便可以解决:

我们如果只是在内层函数里使用global指定好,但是依然会报错,我们还需要在最外层定义一个变量,因为在外部并无该变量存在。

但是如果想让该函数成为闭包,我们可以使用nonlocal来实现

我们这里使用nonlocal标记为不再本地作用域中,而是在上一级局部作用域中定义,但不能是全局作用域中的变量

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档