1. lambda函数概念
除了一般使用def
声明的函数外,Python中还支持lambda
匿名函数,可以在任何场合替代def函数。
匿名函数,通常指的是运行时临时创建的,没有显示命名的函数,它允许快速定义简单的函数。
2. 语法
lambda arguments :expression
或
lambda argument1,argument2...,argumentn : expression using arguments
lambda
是关键字
arguments
是参数,可以是0
个或多
个,用逗号分割
expression
是一个表达式,描述了函数的返回值
lambda
关键字用于创建小巧的匿名函数。lambda a, b: a+b
函数返回两个参数的和。Lambda
函数可用于任何需要函数对象的地方。在语法上,匿名函数只能是单个表达式。在语义上,它只是常规函数定义的语法糖。与嵌套函数定义一样,lambda
函数可以引用包含作用域中的变量。
优点:
简洁:lambda
表达式可以快速定义简单的函数,无需使用def
语句。
匿名:由于lambda
表达式没有正式的函数名称,因此它们是匿名的,可以用于需要短生命周期函数的情况。
轻量级:lambda
表达式只包含一个表达式,因此它们占用内存空间较小,适合用于小型任务。
可嵌套:Lambda
表达式可以嵌套在其他函数或代码块中使用,使代码更加紧凑。
缺点:
只能包含一个表达式:Lambda
表达式只能包含一个表达式,这意味着它们不能包含多个语句或复杂逻辑。
调试困难:由于Lambda
表达式通常很短,因此很难在调试时设置断点和查看执行流程。
不支持变量定义:Lambda
表达式不能定义变量,只能使用已存在的变量。这意味着它们在处理复杂逻辑时可能会受到限制。
性能问题:Lambda
表达式可能在性能方面不如使用def语句定义的函数。由于它们通常是轻量级的,因此可能不会进行优化。
3. 简单示例
3.1 参数为零
# lambda返回一个函数对象
arg_zero = lambda : '参数为零的示例'
print(arg_zero())
3.2 通过普通函数和匿名函数分别表示2个数相加
# 普通函数
def add(x, y):
return x + y
result = add(3, 5)
print(result) # 输出 8
# 匿名函数(lambda 表达式)
add_lambda = lambda x, y: x + y
result_lambda = add_lambda(3, 5)
print(result_lambda) # 输出 8
4. lambda表达式的应用场景
4.1 函数参数传递
将Lambda
表达式作为函数的参数,特别是在需要传递简单函数时,例如 map
、filter
、sorted
等函数。
"""
map 函数用于对可迭代对象的每个元素应用一个函数,可以通过 lambda 表达式传递这个函数。
"""
numbers = [1, 2