lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
如下例子:
定义了一个lambda表达式,求三个数的和。
再看一个例子:
用lambda表达式求n的阶乘。
------------------------------
lambda表达式也可以用在def函数中。
看例子:
这里定义了一个action函数,返回了一个lambda表达式。其中lambda表达式获取到了上层def作用域的变量名x的值。
a是action函数的返回值,a(22),即是调用了action返回的lambda表达式。
这里也可以把def直接写成lambda形式。如下
-
顶
Lambda表达式是Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数。与其它语言不同,Python的Lambda表达式的函数体只能有唯一的一条语句,也就是返回值表达式语句。其语法如下:
lambda 形参列表 : 函数返回值表达式语句
下面是个Lambda表达式的例子:
1
2
3
4
|
#!/usr/bin/envpython
li
=
[{
"age"
:
20
,
"name"
:
"def"
},{
"age"
:
25
,
"name"
:
"abc"
},{
"age"
:
10
,
"name"
:
"ghi"
}]
li
=
sorted
(li,key
=
lambda
x:x[
"age"
])
print
(li)
|
如果不用Lambda表达式,而要写成常规的函数,那么需要这么写:
1
2
3
4
5
6
|
#!/usr/bin/envpython
def
comp(x):
return
x[
"age"
]
li
=
[{
"age"
:
20
,
"name"
:
"def"
},{
"age"
:
25
,
"name"
:
"abc"
},{
"age"
:
10
,
"name"
:
"ghi"
}]
li
=
sorted
(li,key
=
comp)
print
(li)
|
Lambda演算和函数式语言的计算模型天生较为接近,Lambda表达式一般是这些语言必备的基本特性。如:
Scheme:
1
|
(
lambda
(x)(
+
x1))
|
Haskell:
1
|
\x
-
>x
+
1
|