码迷,mamicode.com
首页 > 其他好文 > 详细

闭包那些事

时间:2018-08-29 14:48:30      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:gen   dde   class   turn   必须   执行   return   end   运行   

定义:

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

 

例子:

 

 1 def make_adder(addend):
 2   def adder(augend):
 3     return augend + addend
 4   return adder
 6 p = make_adder(23)
 7 q = make_adder(44)
 8  
 9 print p(100)
10 print q(100)
11 

12 运行结果: 13 123 14 144

 

 

 

 

闭包必须满足三个条件:

1. 必须有内嵌函数
2. 内嵌函数必须引用外部函数中的变量
3. 外部函数返回值必须是内嵌函数.

 

使用闭包注意事项:

1.闭包中是不能修改外部作用域的局部变量的

2.通过return返回的每一个闭包内的活动对象都是独立的

 

作用:

用途1:当闭包执行完后,仍然能够保持住当前的运行环境。

用途2:闭包可以根据外部作用域的局部变量来得到不同的结果。

 

闭包那些事

标签:gen   dde   class   turn   必须   执行   return   end   运行   

原文地址:https://www.cnblogs.com/lmh001/p/9552406.html

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