python闭包怎么理解_Python:闭包的理解

很多函数型的语言都有闭包这一概念,比如python的兄弟js。

人们刚听到闭包这一概念总会觉得它很晦涩,难以理解。其实不然,主要是他的名字起得太抽象了,让人误以为很难。

下面举一个例子:

#coding:utf-8

def foo():

nums = [0]*5

for i in range(5):

nums[i] = lambda : i#这里为nums的五个元素绑定了5个函数,函数要返回变量i的值

#显然这里的函数并没有立即执行,它只是保存了一段代码而已

return nums

for func in foo():

print func()#这里执行了保存在nums中的各个函数,此时当这个函数接到执行命令后,它才会

#去找i这个变量,它发现本函数作用域内没有,就到上层函数作用域中去找,结果

#找到了,它的值是4,所以本例的结果全是4

#结果:

# 4

# 4

# 4

# 4

# 4

想要让它返回我们期望的结果也很简单,只要让它在执行的时候,实时的算出结果不就可以了:

#coding:utf-8

def foo():

nums = [0]*5

for i in range(5):

nums[i] = (lambda : i)()

return nums

for num in foo():

print num

#结果:

# 0

# 1

# 2

# 3

# 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值