lambda
表达式是 Python 中的匿名函数。它接受任意数量的参数,并返回一个单个表达式的值。它的语法格式如下:
lambda arguments: expression
文章目录
- lambda 函数原型解释
- lambda 函数用作其它参数
- lambda 函数高级的技巧
- 多个参数
- 返回多个值
- 条件表达式
- 嵌套 lambda 函数
- lambda 实现闭包
- lambda 注意事项
- 总结
lambda 函数原型解释
在上述语法格式中, arguments
是参数列表,可以包含任意数量的参数, expression
是单个表达式,其值将作为函数的返回值。
下面是一个使用 lambda 表达式创建的计算两个数和的函数:
sum = lambda a, b: a + b
print(sum(33, 44)) # 输出 77
lambda 表达式的优势在于其简洁和易读性。
lambda 函数用作其它参数
lambda 函数可以作为参数传递给其它函数,这样可以使代码更简洁和灵活。
例如,我们可以使用 lambda 函数作为 sorted 函数的第二个参数,以排序一个列表:
numbers = [2, 3, 4, 5]
sorted_numbers = sorted(numbers, key=lambda x: x * -1)
print(sorted_numbers)
运行代码得到如下输出。
在上述代码中我们传递了一个 lambda 函数给 sorted()
函数的 key 参数。该函数接受一个参数 x
,并将其乘以 -1
,以便将列表以降序排列。
lambda 函数还可以作为其它高阶函数(如 map()
和 filter()
)的参数,以实现更复杂的计算。例如,我们可以使用 lambda 函数和 map 函数来计算一个列表中所有数字的平方:
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)
lambda 函数高级的技巧
多个参数
lambda 函数可以接受多个参数,并在函数体内对它们进行处理,例如:
sum = lambda x, y: x + y
result = sum(1, 2)
print(result)
返回多个值
lambda 函数可以返回多个值,并以元组形式返回。
divide = lambda x, y: (x / y, x % y)
result = divide(10, 3)
print(result)
运行代码得到如下输出。
(3.3333333333333335, 1)
条件表达式
lambda 函数可以嵌套其他函数,并在函数体内使用条件语句。
get_sign = lambda x: "开心" if x >= 0 else "不开心"
result = get_sign(-5)
print(result)
嵌套 lambda 函数
可以在一个 lambda 函数内嵌套另一个 lambda 函数
mult = lambda x: (lambda y: x * y)
result = mult(3)(4)
print(result)
lambda 实现闭包
在 Python 中,lambda 函数可以实现闭包。
def make_adder(x):
return lambda y: x + y
add_10 = make_adder(10)
add_20 = make_adder(20)
print(add_10(5)) # 15
print(add_20(5)) # 25
在上述代码中首先定义了一个名为 make_adder()
的函数,它接收一个参数 x
,并返回一个 lambda 函数。lambda 函数接收一个参数 y
,并返回 x + y
的值。
然后通过调用 make_adder(10)
和 make_adder(20)
,我们分别创建了两个闭包 add_10 和 add_20,它们分别对应 x = 10 和 x = 20 的情况。
最后当我们调用 add_10(5)
时,它会返回 10 + 5 = 15
;当我们调用 add_20(5)
时,它会返回 20 + 5 = 25
。
lambda 注意事项
- 代码长度:lambda 函数只能写成一行,长度需要保持在可接受的范围内。
- 可读性:对于较长的代码块,最好使用正常的函数定义,以提高代码的可读性。
- 错误处理:lambda 函数不支持自定义的异常处理,因此需要在调用时小心处理。
lambda 函数并不适合复杂的逻辑或计算,它们通常是用来快速定义简单函数的。
总结
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 864 篇原创博客
👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇
- ⭐️ Python 爬虫 120,点击订购 ⭐️
- ⭐️ 爬虫 100 例教程,点击订购 ⭐️