码迷,mamicode.com
首页 > 编程语言 > 详细

python闭包

时间:2018-05-07 19:36:34      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:soft   必须   使用   turn   结束   函数式   产生   函数   microsoft   

闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。闭包是是指引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,闭包是由函数和与其相关的引用环境组合而成的实体。

如果在一个内嵌函数里,对在外部函数内(但不是在全局作用域)的变量进行引用,那么内嵌函数就被认为是闭包(closure)。

定义在外部函数内但由内部函数引用或者使用的变量称为自由变量。

 

总结一下,创建一个闭包必须满足以下几点:
  1. 必须有一个内嵌函数
  2. 内嵌函数必须引用外部函数中的变量
  3. 外部函数的返回值必须是内嵌函数

举例:

1 def func(name):
2     def func_in(grend):
3         print(name,grend)
4     return func_in
5 
6 func(test,1)

 

这里当调用 func 的时候就产生了一个闭包func__in,并且该闭包持有自由变量  name,因此这也意味着,当函数func的生命周期结束之后,name这个变量依然存在,因为它被闭包引用了,所以不会被回收。

 

python闭包

标签:soft   必须   使用   turn   结束   函数式   产生   函数   microsoft   

原文地址:https://www.cnblogs.com/ajaxa/p/9004003.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!