Python闭包
2016-01-27 16:15
513 查看
闭包的定义:
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,闭包是由函数和与其相关的引用环境组合而成的实体。
output
闭包的判断:
(1)一个嵌套函数(函数里面的函数)
(2)嵌套函数用到封闭函数里定义的一个或多个值
(3)封闭函数的返回值是嵌套函数
参考文章:http://python.jobbole.com/82296/
本文出自 “诡迹” 博客,请务必保留此出处http://unixman.blog.51cto.com/10163040/1739260
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,闭包是由函数和与其相关的引用环境组合而成的实体。
#! /usr/bin/env python def closuretesting(): b = 15 c = 20 print 'b id %x'% id(b) print 'c id %x'% id(c) def line(x): return 2*x + b + c return line testline=closuretesting() print(testline.__closure__) # 这个属性中的值,你会发现正好为b 和 c 的ID ,因此可以得知,闭包是通过这个属性去记录类似于b,c这样的变量的 print(testline.__closure__[0].cell_contents) # __closure__里包含了一个元组(tuple),这个元组中的每个元素是cell类型的对象 print(testline.__closure__[1].cell_contents) print(testline(10))
output
b id 1026008 c id 1025f90 (<cell at 0x7f5efed66d38: int object at 0x1026008>, <cell at 0x7f5efed66d70: int object at 0x1025f90>) 15 20 55
闭包的判断:
(1)一个嵌套函数(函数里面的函数)
(2)嵌套函数用到封闭函数里定义的一个或多个值
(3)封闭函数的返回值是嵌套函数
参考文章:http://python.jobbole.com/82296/
本文出自 “诡迹” 博客,请务必保留此出处http://unixman.blog.51cto.com/10163040/1739260
相关文章推荐
- Python基础教程笔记——条件,循环和其他语句
- Python基础教程笔记——条件,循环和其他语句
- python--把一个方法变成属性调用
- 利用Python快速查找爬取百度贴吧某页的全部图片
- 细说python类2——类动态添加方法和slots
- Python基础教程笔记——列表和元组
- Python基础教程笔记——列表和元组
- python基础概念学习笔记
- Python安装手册
- Python--迭代器
- Python风格规范
- 快速搭建python开发环境
- Python:爬取乌云厂商列表,使用BeautifulSoup解析
- Python文件组织(-)
- python学习笔记一
- Python基础教程笔记——使用字符串
- Python基础教程笔记——使用字符串
- python读写文件处理空格,空行与结束
- 【python】python新手必碰到的问题---encode与decode,中文乱码[转]
- python3 黑板客爬虫闯关游戏(三)