python中的lambda关键字(repost from https://www.cnblogs.com/hf8051/p/8085424.html)
lambda表达式在需要一个函数同时又不想去命名一个函数的场合下使用,指匿名函数。
1 add = lambda x, y : x+y 2 add(1,2) # 结果为3
那么到底要如何使用lambda表达式呢?
1、应用在函数式编程中
Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:
1 # 需求:将列表中的元素按照绝对值大小进行升序排列 2 list1 = [3,5,-4,-1,0,-2,-6] 3 sorted(list1, key=lambda x: abs(x))
当然,也可以如下(不使用lambda):
1 list1 = [3,5,-4,-1,0,-2,-6] 2 def get_abs(x): 3 return abs(x) 4 sorted(list1,key=get_abs)
以上这种方式的代码看起来不够Pythonic(hhhh)
2.应用在闭包中
1 def get_y(a,b): 2 return lambda x:ax+b 3 y1 = get_y(1,1) 4 y1(1) # 结果为2
当然,也可以用常规函数实现闭包,如下:
1 def get_y(a,b): 2 def func(x): 3 return ax+b 4 return func 5 y1 = get_y(1,1) 6 y1(1) # 结果为2
只不过这种方式显得有点啰嗦。