1、匿名函数定义
lambda表达式也叫做匿名函数,在定义它的时候,没有具体的名称,一般用来快速定义单行函数。lambda 表达式一般用于无需多次使用的函数,并且该函数使用完毕就释放了所占用的空间。
2、语法格式
name = lambda [arg1[,arg2,arg3....argN]]:expression
name:用于调用lambda表达式。
[arg1 [,arg2,...,argn]]:可选参数,用于指定要传递的参数列表,多个参数间使用逗号“,”分隔。
expression:必选参数,用于指定一个实现具体功能的表达式。如果有参数,那么在该表达式中将应用这些参数。
test1 = lambda x : x+1
print(test1(5))
# 输出结果6
test2 = lambda x : 0 if x > 5 else 1
print(test2(6))
# 输出结果0
3、注意事项
1)lambda 表达式必须使用 lambda 关键字定义;
2)lambda 关键字后面,冒号前面是参数列表,参数数量可以从 0 到任意个数。多个参数用逗号分隔,冒号右边是 lambda 表达式的返回值。
3)lambda 表达式 : 后面只能有一个表达式,多个会出现错误
例:lambda x:x+1 x+2
4)for 语句不能用在 lambda 中,lambda 表达式只允许包含一个表达式,不能包含复杂语句,该表达式的运算结果就是函数的返回值。
例:print((lambda x, y=1: x if x > y else y)(3))
5)lambda 表达式不能共享给别的程序调用
4、lambda 表达式应用场景
1)将 lambda 表达式赋值给一个变量,然后调用这个变量
fun = lambda a: a**2
print(fun(2))
2)将 lambda 表达式作为参数传递给其它函数
在某些函数中,函数设置中是可以接受匿名函数的,例如下述排序代码:
my_list = [(1, 2), (3, 1), (4, 0), (11, 4)]
my_list.sort(key=lambda x: x[1])
print(my_list)
# my_list 变量调用 sort 函数,参数 key 赋值了一个 lambda 表达式,
# 该式子表示依据列表中每个元素的第二项进行排序。
3)将 lambda 表达式应用在函数的返回值里面
这种技巧导致的结论就是函数的返回值也是一个函数,具体测试代码如下:
def fun(n):
return lambda x:x+n
new_fun = fun(2)
print(new_fun)
# 输出结果:<function fun.<locals>.<lambda> at 0x000001E6070A00D0>