Python闭包实践

1 def multiplier(factor):
2     def multiplyByFactor(number):
3         return (number+1)*factor
4     return multiplyByFactor
5 
6 double = multiplier(2)
7 print double(5)
8 
9 print multiplier(2)(5)

输出都是12

 

闭包:把函数作为参数传递给其他函数,放在数据结构中,作为函数的返回结果。

为什么叫闭包:将组成函数的语句和这些语句的执行环境打包在一起,得到的对象称为闭包。

1 #foo.py
2 x=42
3 def callf(func):
4     return func()
1 import foo
2 x = 37
3 def helloworld():
4     return "Hello World. x is %d" % x
5 
6 foo.callf(helloworld)

调用结果为 'Hello World. x is 37'

即helloworld()使用的x的值是在与它相同的环境中定义的。

闭包有什么用:

惰性求值 || 延迟求值 || 在一系列函数调用中保持某个状态

闭包会捕捉内部函数的环境,因为可用于包装现有函数。

posted @ 2012-10-23 14:30  mess4u  阅读(644)  评论(0编辑  收藏  举报