您的位置:首页 > 编程语言 > Python开发

python中的闭包

2013-07-23 22:45 197 查看
我相信很多人对于闭包这个东西还是比较模糊的

解释如下:

闭包和嵌套是分不开的,我们从Python的运行原理来看:

python的运行时环境中有一段空间时分配给运行时栈的,(这个栈的大小可以在运行时确定) 。运行时栈中存储的内容有:代码运行需要的栈大小,局部变量,嵌套作用域中使用的变量,外层作用域中变量名的集合,如下图所示,



闭包在维基百科中给出的定义是:一个包含了环境部分和控制部分的实体。其实说到底就是将某个函数所表示的作用域的上一层作用域中的对象与他的作用域中的对象捆绑在一起。这就是为什么一个运行时环境还要为闭包分配空间,因为他加入了由于闭包而引入的上层作用域中的对象。也就是说一个函数所形成的作用域由一些几部分:局部变量,函数参数,闭包所引入的对象。下面举个例子:

def outter():
value="inner"
def inner():
print value
return inner
show=outter()
show()
上面的执过程就创建了闭包,因为inner这个函数的作用域中引用了其外层作用域中的字符串对象value,这个时候就把外层作用域中的value和inner的作用域捆绑在一起,这个时候就形成了闭包。再看下面这段代码:

def outter():
def inner():
print “Hello world”
return inner
show=outter()
show()

这段代码就没有创建闭包,因为其没有引用外部作用域中的变量。
Python中用来实现闭包的方法也就是嵌套函数,并将函数作为返回值返回。看完这些是不是觉得闭包很简单呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: