携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
0 环境
- 编辑器:idea或vscode
- 系统版本:windows10
- python版本:3.9.6
1 前言
前面了解了,匿名函数虽然有单行限制,但是支持参数的变化,现在我们关注一下,匿名函数应用的场景或者说,怎么使用。
2 匿名函数的应用
1 sorted函数
正常我们ctrl+b,直接进去看,但是这种直接点进去看的问题,如上面缩水,*args,**kwargs的参数形式,不够清晰,很难知道传什么,所以比较推荐使用help(函数)的方式查看,如下所示。
如上图展示,sorted函数里面需要传入一个可迭代对象,默认key是None,是否反转reverse默认为False。比如现在我有几个客户,知道了他们每个人的姓名和年龄,我想通过年龄进行排序。 如下代码:
先定义了一个emps列表,里面存放每个具体的Emp的值,namedtuple的理解呢,就是带字段名的元组,模拟的是真实场景下数据格式,sorted传入可迭代对象了,有了数据,那么就差key了,这里要用age作为key,怎么获取age呢,很容易的就会想到使用匿名函数来获取age。
from collections import namedtuple
def demo9():
Emp = namedtuple("Emp", ["username", "age"])
emps = [Emp("zhangsan", 102), Emp("lisi", 92), Emp("wangwu", 32), Emp("wuming", 88)]
result = sorted(emps, key=lambda x: x.age)
print(result)
if __name__ == '__main__':
demo9()
假如不太理解匿名函数,得到age的,可以先写成普通函数,然后自己转成匿名函数。
3 总结
如上面的使用场景,sorted函数需要可迭代对象,以及key,正常排序方式默认即可。这里的key可以是个函数,那么就可以使用匿名函数。还有当不确定可不可以使用匿名函数或者说,匿名函数用着不怎么熟练,可以先写成普通函数的方式,传入key,结果没问题,在把它转成匿名函数。