什么是匿名函数
def 定义的是有名函数:特点是通过是可以通过名字重复调用
def func():#func=函数的内存地址
pass
匿名函数就是没有名字的函数:特点是只能在定义使用一次
为何要使用匿名函数
强调:
匿名函数的定义就是相当于只产生一个变量值,而没有绑定任何名字。
所以会在定义完之后就会被回收,无法重复使用,只能在定义时使用一次。
应用:
当某一个功能仅能使用一次没有重复使用的必要了,就应该定义成匿名函数。
如何使用匿名函数
lambda x,y:x+y
匿名函数常用的使用情况
salaries = {
'egon': 3000,
'alex': 100000000,
'wupeiqi': 10000,
'yuanhao': 2000
}
max函数
print(max(salaries,key=lambda x:salaries[x]))
key = 后面接的是匿名函数,这个匿名函数使用定义比较的大小的对象。
max()的参数接受的是可迭代对象,
结果就是返回,比较工资的大小,返回名字。
sorted排序
print(sorted(salaries,key=lambda k:salaries[k]))
print(sorted(salaries,key=lambda k:salaries[k],reverse=True))
key排序规则,reverse排序方式,默认False正序 True反序(从大到小)
names = ['alex', 'wupeiqi', 'yuanhao', 'kevin', 'hu老师']
map函数映射
res = map(lambda x: x + 'dsb', names)
map映射,对可迭代对象的元素进行操作,得到map对象也是一个可迭代对象,func参数使用匿名使用一次的。
reduce函数合并
print(reduce(lambda x,y:x+y,[i for i in range(101)]))
print(reduce(lambda x,y:x+y,['h','e','l','l','o'],'----------'))
reduce就是将可迭代对象合并在一起
filter函数筛选
res=filter(lambda name:name.endswith('sb'),names)
print(res)
print(list(res))