新手入门,深入解析 python lambda表达式

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手入门,深入解析 python lambda表达式相关的知识,希望对你有一定的参考价值。

lambda 表达式是 Python 中的匿名函数。它接受任意数量的参数,并返回一个单个表达式的值。它的语法格式如下:
lambda arguments: expression

文章目录

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 lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章

深入理解 lambda表达式 与 Optional Null 源码解析(Java11 三)

python基础入门之十二 —— lambda表达式

[Python 入门] Lambda 表达式

Python入门-5函数:07lambda表达式和匿名函数-eval()函数

今夜我懂了Lambda表达式_解析

Python入门教程第26篇 Lambda表达式