匿名函数
lambda关键字在Python表达式内部创建匿名函数
然后,Python简单的语法限制了lambda函数的定义体只能使用纯表达式。lambda函数的定义体中不能赋值,也不能使用while和try等Python语句
在参数列表中最适合使用匿名函数
# 使用lambda表达式反转拼写,然后依次给单词列表排序
fruits=['strawberry','fig','apple','cherry','respberry','banana']
sorted(fruits,key=lambda word:word[::-1])
['banana', 'apple', 'fig', 'respberry', 'strawberry', 'cherry']
除了作为参数传给高阶函数之外,Python很少使用匿名函数。由于语法上的限制,复杂的lambda表达式要么难以阅读,要么无法写出
lambda表达式重构秘籍
- 编写注释,说明lambda表达式的作用
- 研究一会儿注释,并找出一个名称来概括注释
- 把lambda表达式转换成def语句,使用那个名称来定义函数
- 删除注释
lambda句法只是语法糖:与def语句一样,lambda表达式会创建函数对象。这是Python中几种可调用对象的一种