Python lambda表达式

“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。 https://baike.baidu.com/item/lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F

匿名函数

在其他语言中,匿名函数就是没有名字的函数: 比如安卓开发常见的给按钮添加单击事件

button.addActionListener(new ActionListener(){  //new ActionListener定义了一个匿名对象
public void actionPerformed(ActionEvent ae){
System.out.println("Actiondetected");
}
});

button.addActionListener(()->{   //没有函数名,用“()->{}”表示匿名函数
System.out.println("Actiondetected");
});

比如JavaScript的闭包

function Circle(r) {   //函数 函数名为Circle
    this.r = r;
}
Circle.PI = 3.14159;
Circle.prototype.area = function() {   //省略函数名 匿名函数
   return Circle.PI * this.r * this.r;
}
var c = new Circle(1.0);
alert(c.area()); //3.14159

Python lambda表达式

Python使用lambda表达式用来表示匿名函数,其特点是仅允许有一个表达式,并且默认将表达式的值作为函数的返回值。

>>> L = list(filter(lambda x: x%2 == 1, range(1,11)))
>>> print(L)
[1, 3, 5, 7, 9]
>>>

lambda x: x%2 ==1  #lambda表达式 即 匿名函数 等价于
def isodd(x):
    return x%2 ==1 #if(x%2 == 1): return x

匿名函数的优点:

  1. 简洁方便
  2. 不用担心与其他函数重名

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏cs

C#3.0面向对象程序设计一

文章首发 http://www.imooc.com/article/22105 我还在简书。。。。。。 面向对象三大特征,继承,封装,多态 1.0 封...

2966
来自专栏向治洪

JAVA中重写equals()方法的同时要重写hashcode()方法

object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时...

2476
来自专栏向治洪

Kotlin基础之内联函数

内联函数 使用高阶函数会给运行时带来一些坏处:每个函数都是一个对象,捕获闭包(如:访问函数体内的变量),内存分配(函数对象或Class),虚拟调用引入的运行过载...

2085
来自专栏nnngu

如何用java语言实现C#中的ref关键字(按引用传递参数)的效果

在上一篇文章中(Java的参数传递是值传递还是引用传递),主要分析了java语言的参数传递只有按值传递而没有按引用传递。 先看一下微软的C#文档对按引用传递的定...

4676
来自专栏软件开发

JavaSE学习总结(六)——接口与抽象类

一、不需要实例化的原因 看一个示例: package com.zhangguo.chapter5.s1; /**动物园*/ public class Zoo ...

2257
来自专栏云霄雨霁

Java--多态性之抽象类和接口

1754
来自专栏别先生

jdk1.8学习、jdk1.9学习、jdk10.0学习和总结

https://www.oschina.net/translate/109-new-features-in-jdk-10

771
来自专栏土豆专栏

Java面试之对象比较

原因是基本类型的变量存在栈中,系统先创建一个变量为a的引用然后查找栈中是否存在10这个值,如果没找到,就将10存放进来,a指向10。同理b也是一样,创建一个变量...

1401
来自专栏漫漫全栈路

C#历代版本新特性——面试题常用

掌握一门语言,当然要掌握它的特性,而随着C#历代版本的迭代更替,C#语言也日趋完善,在C#2.0~C#4.0版本所带来的新的语法特性格外重要。C#的新特性,其...

4869
来自专栏我爱编程

Python方法super()

在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来...

2766

扫码关注云+社区

领取腾讯云代金券