lambda函数
lambda 函数是一种匿名函数,也称为内联函数。
通常用于哪些简单的、一次性的函数,这样可以避免定义一个完整的函数。
与普通函数不同,它们是一种更加简介的方式来编写小型临时函数
lambda 语法
- lambda 函数的语法很简单:lambda关键字定义函数,后面跟着参数列表和一个表达式
- lambda arguments: expression
lambda 参数说明
参数说明:
- arguments --表示函数参数,可以是一个或多个,多个参数之间用逗号分隔。
- expression --表示函数体,可以是任何有效的Python表达式,即是函数的具体实现逻辑
注意:如果一个匿名函数的参数列表为空,那么在定义时也需要使用一对空括号来表示,函数变量加了括号就是执行函数,不加就是变量。
lambda 函数的优点与限制
优点:
优点 | 说明 |
---|
简洁性 | lambda函数通常用于简单、一次性操作,使代码更简洁 |
匿名性 | lambda函数是匿名的,适合作为参数传递给其他函数 |
功能性编程 | lambda函数是映射式变成的强大工具, 可以进行函数组合、映射、过滤等操作 |
节省内存 | lambda函数是为一次性的简单函数,虽然占用额外空间,但可以即用即弃,节省内存 |
限制:
限制 | 说明 |
---|
只能有一个表达式 | lambda函数的主体只能是单个表达式,不能包含多个语句或复杂逻辑 |
可读性 | lambda函数通常用于简单操作,复杂逻辑会降低代码可读性,不适合复杂函数 |
不支持注解 | lambda函数不支持像普通函数那样的类型注解,可能降低代码的可维护性 |
不支持return语句返回结果 | lambda关键字定义匿名函数,表达式的结果就是函数的返回值 |
lambda函数与普通函数的区别
类型 | lambda函数 | 普通函数 |
---|
定义方式 | 使用lambda关键字定义,语法简洁 | 使用def关键字定义 |
名称 | 匿名,没有函数名 | 有明确的函数名 |
参数数量 | 可以有零个或多个参数,但是表达式只能有一个 | 可以有零个或多个参数,函数体内可以有多个语句 |
可读性 | lambda由于其匿名性和简洁性,对于复杂的逻辑代码可读性比较低 | 对于复杂的逻辑代码,def关键字定义的函数通常更具有可读性 |
性能 | lambda对于简单操作,性能上快于def函数,因为它们在编译时进行优化 | 对于更复杂的操作,def和lambda函数性能相差可以忽略不计 |
重要性 | lambda函数常用于一次性操作 | def函数可以重用,如需要在多个地方使用相同的函数逻辑,def定义的函数更为合适 |
lambda函数的用法
简单的用法
- 简单的返回结果
str_data = lambda: "hello world"
print(str_data())
- 定义一个简单的lambda函数,对传入的参数求平方
int_data = lambda x: x * x
result = int_data(5)
print(result)
作为参数传递给其它函数
- 使用lambda函数和map()函数将列表中的每个元素都平方
lst_data = [1, 2, 3, 4, 5, 6]
result = list(map(lambda x: x * x, lst_data))
print(result)
- 使用lambda函数或filter()函数筛选出列表中的偶数
lst_data = [1, 2, 3, 4, 5, 6]
result = list(filter(lambda x: x % 2 == 0, lst_data))
print(result)
- 使用lambda函数和sorted函数对数据进行排序
dct_data = [
{"name": "zhangshan", "age": 24},
{"name": "lisi", "age": 22},
{"name": "wanghwu", "age": 27},
{"name": "xaiqi", "age":18}
]
sorted_data = sorted(dct_data, key=lambda x: x["age"], reverse=True)
print(sorted_data)