note11闭包 匿名函数

转载 2016年05月31日 17:32:24

1、我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。


2、返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

3、在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:

>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]

4、lambda表示匿名函数,冒号前面的x表示函数参数,匿名函数只能有一个表达式,不用return,也可以把匿名函数赋给一个变量,再利用变量调用该函数


5、偏函数,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单

6、作用域:在一个模块中,有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。正常的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI等;类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;

类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等;

匿名函数与闭包(closure)

该函数所在的区域一般来说,一个function在return之后,
  • xixiaoming_A
  • xixiaoming_A
  • 2014年07月10日 19:02
  • 1112

JS之匿名函数与闭包

匿名函数是指没有指定函数名称的函数,先来看下面的例子:想想看结果是什么?var a = function(t) { return t; } (1 + 2).toString(); alert(a); ...
  • kkdelta
  • kkdelta
  • 2013年01月07日 16:37
  • 8280

js中的匿名函数和闭包总结篇

匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。一.匿名函数//普通函数 function box() { //函数名是box ...
  • u012896140
  • u012896140
  • 2015年10月29日 17:50
  • 1195

匿名函数和闭包的区别

不少编程人员分不清匿名函数和闭包总是把他们俩搞混  在这之前我也是对这云里雾里的 匿名函数:简单的来说就是没有名字的函数 匿名函数有两种方式定义 第一种方式: var double =...
  • xiaoerduo123x
  • xiaoerduo123x
  • 2016年11月22日 21:10
  • 594

20.php回调、匿名函数、和闭包操作

现在的php是即支持面向对象的语言由支持面向过程的语言,在开发过程中我们往往会混合使用,回调会让我们容易将两种编码方式做整合,做到优秀的插拔。而闭包操作和回调都是建立在匿名函数基础之上的。 ...
  • qq_22533095
  • qq_22533095
  • 2016年02月19日 22:35
  • 512

Go语言的匿名函数与闭包

匿名函数:由一个不带函数名的函数声明和函数体组成func(a,b int,z float64)bool{ return a*b...
  • hello_bravo_
  • hello_bravo_
  • 2017年05月08日 16:13
  • 716

Javascript 匿名函数与闭包

Javascript 匿名函数与闭包一、函数的几种定义1、函数关键字(function) 语句      function func1(){         alert("func1");   ...
  • JeamKing
  • JeamKing
  • 2011年05月27日 16:39
  • 1951

GO语言学习-匿名函数和闭包

Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。 使用方法如下 a := func(input1 int) int{       return input1 += 1 }() b...
  • phlong999
  • phlong999
  • 2015年06月02日 16:08
  • 1568

Scala 的 "匿名函数"与 "闭包"!

有这样一个函数, 它接受一个函数(或者说闭包)作为参数: object Timer{   def oncePerSecond(callback: () => unit): unit = { ...
  • wisgood
  • wisgood
  • 2016年05月16日 10:53
  • 727

关于js的闭包 匿名函数和作用域的几个小点

今天看到js的闭包那一章,被例子搞的头大:首先是关于闭包中的自由变量:var result=[]; function foo(){ var i= 0; for (;i...
  • qa84643685
  • qa84643685
  • 2016年05月07日 17:06
  • 855
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:note11闭包 匿名函数
举报原因:
原因补充:

(最多只允许输入30个字)