Python闭包
2016-04-25 12:20
633 查看
内部函数可以看做一个闭包。闭包是一个可以由另一个函数动态生成的函数,并且可以改变和存储函数外创建的变量的值。
下面的例子可以看出闭包的特点:
* inner2()直接使用外部的saying参数,而不是通过另外一个参数获取;
* knights2()返回值为inner2函数,而不是调用它。
下面的例子可以看出闭包的特点:
* inner2()直接使用外部的saying参数,而不是通过另外一个参数获取;
* knights2()返回值为inner2函数,而不是调用它。
def knights2(saying): def inner2(): return "We are the knights who say: '%s'" % saying return inner2inner2()函数可以得到saying参数的值并且记录下来。 return inner2这一行返回的是inner2函数的复制(没有直接调用)。所以它就是一个闭包:一个被动态创建的可以记录外部变量的函数。
#用不同的参数调用knighets2()两次: >>> a = knights2('Duck') >>> b = knights2('Hasenpfeffer') #那么a和b会是什么类型? >>> type(a) <class 'function'> >>> type(b) <class 'function'> #它们是函数,同时也是闭包: >>> a <function knights2.<locals>.inner2 at 0x10193e158> >>> b <function knights.<locals>.inner2 at 0x10193e1e0> #如果调用它们,会记录被knights2函数创建时的外部变量saying: >>> a() "We are the knights who say: 'Duck'" >>> b() "We are the knights who say: 'Hasenpfeffer'"摘抄自《Python语言及其应用》4.7.9闭包
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- 深入理解PHP之匿名函数
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例