没有名字的函数,不用写return
,返回值就是该表达式的结果。
语法:lambda 参数:方法(或三元运算)
lambda x:x*x等同于
def f(x): return x * x
#普通函数 def calc(x,y): if x > y: return x/y else: return x*y #匿名函数,想要调用必须赋一个变量 func = lambda x,y: x/y if x>y else x*y #匿名函数最多只支持三元运算,再复杂的判断不支持 print(calc(3,8)) print(calc(16,8)) print(func(3,8)) print(func(16,8))
结果:
24 2.0 24 2.0
上面的例子好像看不出匿名函数和普通函数有什么区别,反而看上去会容易迷糊,那有什么用呢?
有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
以map()函数为例:
现在需要一个列表里的所有元素自乘
a = list(range(10)) print(a) #普通方法 for index,i in enumerate(a): a[index] = i*i print(a) #map()方法 print(list(map(lambda x:x*x,a)))
结果:
#普通方法 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] #map()方法 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
可以看出同一个需求显然用匿名函数更加简洁
PS:map(func, *iterables)函数,第一个参数是个函数,第二个是用来操作的列表等元素集合
总结:
1、匿名函数不需要特意去定义一个函数名,可能这个函数只是某个地方临时用一下,后面就不会再用了
2、匿名函数一般都是和其他方法搭配使用,使得代码更加简洁