在一些情况下,我们想在程序里添加一些简单的小处理时,除了写一下控制语句充当开关,我们还能怎么做呢?我们都知道,Python都会有一些包或者模块,方便我们使用,这里,我们也有一个lambda函数~
而lambda函数是什么呢?又有哪些功能…
➢首先,我们来看一下这个例子:
通过序列[‘abc’, ‘xfe’, ‘zcb’]中元素的第三个字符对序列元素进行排序。
有如下程序:
>>> sorted(['abc', 'xfe', 'zcb'], key=lambda x:x[2])
['zcb', 'abc', 'xfe']
这样是不是很方便呢?现在,就让我们来了解一下lambda吧!
lambda匿名函数
- lambda函数是一种匿名函数,即没有名字的函数,但也可以用lambda表达式定义有名字的函数。
- 使用 lambda 保留字定义,函数名是返回结果。
- lambda表达式中可以使用任意复杂的表达式,但是必须只编写一个表达式,且表达式只能是单行的。
- lambda表达式不允许包含复合语句,但在表达式中可以调用其他函数。
- lambda函数适合需要一个函数作为另一个函数参数的场合,主要用作一些特定函数或方法的参数。
- 一般情况下,建议使用 def 定义的普通函数。
可理解为:lambda (parameters) : (return value)
下面,我们来看一些lambda的函数示例:
-
lambda x, y : x+y;函数输入任意两个可进行加法运算的参数x和y,输出是它们的和(也可以进行其他的运算)。
>>> add = (lambda x, y : x+y) >>> add(3,9) 12 >>> add(["hello","hi"],["friend"]) ['hello', 'hi', 'friend']
-
lambda : None;函数没有输入参数,输出是None
-
lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)
>>> sum_1 = (lambda *b : sum(b))
>>> sum_1(2,9,7)
18
- lambda **kwargs: 1; **后的那些参数被当作字典类型传递到函数,这里输出是1