Python:闭包的理解
来源:互联网 发布:域名纠纷 律师 编辑:程序博客网 时间:2024/06/05 22:33
很多函数型的语言都有闭包这一概念,比如python的兄弟js。
人们刚听到闭包这一概念总会觉得它很晦涩,难以理解。其实不然,主要是他的名字起得太抽象了,让人误以为很难。
下面举一个例子:
#coding:utf-8def foo():nums = [0]*5for i in range(5):nums[i] = lambda : i#这里为nums的五个元素绑定了5个函数,函数要返回变量i的值#显然这里的函数并没有立即执行,它只是保存了一段代码而已return numsfor func in foo():print func()#这里执行了保存在nums中的各个函数,此时当这个函数接到执行命令后,它才会#去找i这个变量,它发现本函数作用域内没有,就到上层函数作用域中去找,结果#找到了,它的值是4,所以本例的结果全是4#结果:# 4# 4# 4# 4# 4
想要让它返回我们期望的结果也很简单,只要让它在执行的时候,实时的算出结果不就可以了:
#coding:utf-8def foo():nums = [0]*5for i in range(5):nums[i] = (lambda : i)()return numsfor num in foo():print num#结果:# 0# 1# 2# 3# 4
0 0
- Python:闭包的理解
- Python 闭包的理解
- Python 包的理解
- 关于Python闭包的理解
- 浅显理解 Python 闭包
- python中的闭包理解
- 对python的闭包,装饰器的理解
- python中的闭包以及对装饰器的理解
- Python的模块和包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 闭包的理解
- 深入理解Python的包机制
- SIteMesh介绍
- Maven的本地初始配置三步走
- rar加密算法
- Linux下Pig的安装和配置
- 重载技巧+简单实现string和Vector
- Python:闭包的理解
- OpenFire 安装文档
- Android应用的Tab键,来回反复点击会报ANR,是空指针导致的,判空就可以解决
- 从内存的角度看free(p) , p=NULL
- 致、我心爱的姑娘
- MooseFS分布式文件系统的注意事项和排错经验
- UITextField和UITextView输入限制解决方案
- 总结一下到新公司后这半个月的工作吧(中)
- PeekMessage&GetMessage