一个函数和它的环境变量合在一起,就构成了一个闭包(closure)。在Python中,所谓的闭包是一个包含有环境变量取值的函数对象。环境变量取值被保存在函数对象的__closure__属性中。比如下面的代码:

def line_conf():
b = 15
def line(x):
return 2*x+b
return line # return a function object b = 5
my_line = line_conf()
print(my_line.__closure__)
print(my_line.__closure__[0].cell_contents)
print(my_line(5)) >>>>
(<cell at 0x004E8550: int object at 0x1DEC6960>,)
15
25 #B的取值为15, 2*5+15=25

__closure__里包含了一个元组(tuple)。这个元组中的每个元素是cell类型的对象。我们看到第一个cell包含的就是整数15,也就是我们创建闭包时的环境变量b的取值。

最新文章

  1. JS 与OC 交互篇
  2. MySQL索引原理及慢查询优化
  3. Linux不重启的情况下添加硬盘
  4. CentOS安装wordpress权限问题
  5. [转]C++模板学习
  6. FTP出现211-Extension supported 停止的解决方法
  7. maven中scope参数说明
  8. WPF学习笔记2&mdash;&mdash;XAML之2
  9. SessionFactory的创建和Session的获得
  10. CSS中常见中文字体的英文名称(Microsoft YaHei,SimHei)
  11. Struts2国际化信息机制
  12. 安装zip版mysql
  13. Ambari集成Kerberos报错汇总
  14. VS2008中 ATL CLR MFC Win32 区别
  15. maven 打包zip,jsw相关
  16. servlet 过滤器实现 请求转发(跳转);跨域转发请求;tomcat 环境下。
  17. CDS &amp; ORF &amp; 启动子 &amp; 终止子 &amp; 转录因子 &amp; 基因结构 &amp; UTR
  18. PHP:第三章——PHP中的递归函数
  19. DDR的型号问题
  20. Python3 列表List(十一)

热门文章

  1. extjs6需要引入文件
  2. bzoj 3261: 最大异或和 (可持久化trie树)
  3. 莫队+分块 BZOJ 3809
  4. 2015/11/3用Python写游戏,pygame入门(3):字体模块、事件显示和错误处理
  5. 关于 Capella 需要纠正的语音
  6. eclipse中修改svn用户名和密码
  7. 对 JavaScript 进行单元测试的工具
  8. CSS浏览器兼容问题集-第四部分
  9. IO流-文件的写入和读取
  10. 【CodeForces】626 F. Group Projects 动态规划