Python中,lambda函数也叫匿名函数,及即没有具体名称的函数,它允许快速定义单行函数,类似于C语言的宏,可以用在任何需要函数的地方。这区别于def定义的函数。
一、lambda与def的区别:
1)def创建的方法是有名称的,而lambda没有。
2)lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。
3)lambda只是一个表达式,而def则是一个语句。
4)lambda表达式” : “后面,只能有一个表达式,def则可以有多个。
5)像if或for或print等语句不能用于lambda中,def可以。
6)lambda一般用来定义简单的函数,而def可以定义复杂的函数。
7)lambda函数不能共享给别的程序调用,def可以。
注意:lambda函数主要用作一些特定函数或方法的参数,一般情况下,建议使用def定义的普通函数
二、lambda语法格式:
<函数名> = lamb <参数>:<表达式>
即等价于:
def <函数名>(<参数>):
<函数体>
return <返回值>
如下示例:
#单个参数
>>> g = lambda x : x ** 2
>>> print g(3)
9
#多个参数的
>>> g = lambda x, y, z : (x + y) ** z
>>> print g(1,2,2)
9
lambda表达式会返回一个函数对象,如果没有变量接受这个返回值的话,它很快就会被丢弃。也正是由于lambda只是一个表达式,所以它可以直接作为list和dict的成员。
小结:
lambda 并不会带来程序运行效率的提高,只会使代码更简洁
lambda 是为了减少单行函数的定义而存在的
如果可以使用for…in…if来完成的,坚决不用lambda
参考博客:https://blog.youkuaiyun.com/SeeTheWorld518/article/details/46959593