统计

留言簿(1)

DB

Others

QA

Tech Website

阅读排行榜

评论排行榜

Python中的Closure


#定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)
分解来说,包含下面3个条件:
1) 需要函数嵌套, 就是一个函数里面再写一个函数.
2) 外部函数需要返回一个内部函数的引
3) 外部函数中有一些局部变量, 并且, 这些局部变量在内部函数中有使用
一些概念:
1)自由变量: 外部函数中定义的局部变量, 并且在内部函数中被使用
2) 闭包: 那个使用了自由变量并被返回的内部函数就称为闭包

#支持闭包的语言有这样的特性:
1)函数是一阶值(First-class value),即函数可以作为另一个函数的返回值或参数,还可以作为一个变量的值
2)函数可以嵌套定义,即在一个函数内部可以定义另一个函数

#代码示例

 1def counter(start_at=0):
 2    count = [start_at]
 3    def incr():
 4        count[0] += 1   #对局部变量的引用
 5        return count[0]
 6    return incr  #返回一个函数对象
 7
 8
 9if __name__ == '__main__':
10    c = counter(3)
11    print type(c)
12    print c()
13    print c()
14


 

posted on 2011-06-15 07:31 XXXXXX 阅读(1299) 评论(0)  编辑  收藏 所属分类: Python


只有注册用户登录后才能发表评论。


网站导航: