什么是匿名函数?
匿名函数就是没有名字的函数
为什么要有匿名函数?
因为随着程序代码的增多对于函数起名比较麻烦,并且有些函数只调用一次,那么这种情况,用匿名函数比较合适
#如何定义一个匿名函数?
一般函数:
def test(x,y):
return x + y
res = test(1,2)
print(res)
>>> 3
匿名函数:
res = (lambda x,y: x+y)(1,2)
print(res)
>>> 3
语法
lambda 函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
# lambda 参数列表:return [表达式] 变量
# 由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收
实例一
# 可写函数说明
sum = lambda x, y: x + y;
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
>>> 30
print ("相加后的值为 : ", sum( 20, 20 ))
>>> 40
实例二
对字典排序
infos = [
{'name':'zhangsan','age':23},
{'name':'lisi','age':24},
{'name':'wangwu','age':12},
{'name':'zhaoliu','age':33},
{'name':'liuer','age':23}
]
infos.sort(key=lambda x:x['age'])
print(infos)
>>> [{'name': 'wangwu', 'age': 12}, {'name': 'zhangsan', 'age': 23}, {'name': 'liuer', 'age': 23}, {'name': 'lisi', 'age': 24}, {'name': 'zhaoliu', 'age': 33}]
实例三
把lambda当一个变量
def test(a,b,func):
result = func(a,b)
return result
num = test(11,22,lambda x,y:x+y)
print(num)
>>> 33
匿名函数优点
• 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
• 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
• 使用lambda在某些时候然后代码更容易理解