gpt4 book ai didi

python - 为什么使用 Lambda 将函数作为参数发送给另一个函数

转载 作者:行者123 更新时间:2023-11-30 22:48:29 24 4
gpt4 key购买 nike

在深入研究lambda时,我定义了以下代码:

def f2(number, lambda_function):
return lambda_function(number)

def f1(number):
return f2(number, lambda x: x*2)

number = 2
print f1(number)

虽然我确实同意这样的代码看起来很酷,但我想知道为什么我不使用更传统的方法来把它写下来,如下所示:

def f1(number):
return number*2

number = 2
print f1(number)

我知道有些语言比 Python 更依赖函数式编程。但在 Python 中,如果我避免使用 lambda 和函数编程技巧,我最终会得到更少的行和更易读的代码。是否可以修改上面的代码来说明不使用 lambda 就无法完成任务的情况? Python 中 lambda 的用途是什么?你能给我举个例子来说明 lambda 真正“闪耀”的地方吗?可能是使用 lambda 简化代码的示例?

最佳答案

lambda函数的工作方式与普通函数类似,但用于仅执行一次的情况。那么,为什么要创建消息体并定义函数呢?例如,对元组列表进行排序:

>>> my_list = [(1, 3) , (4, 8), (2, 3), (1, 6)]
>>> my_list.sort(key=lambda x: (x[0], -x[1]))
>>> my_list
[(1, 6), (1, 3), (2, 3), (4, 8)]

在这里,我按索引 0 的升序对 my_list 进行排序,然后按索引 1 的降序对 my_list 进行排序。但 list.sort() 接受 key 的值作为函数。与其定义函数然后将该函数传递到此处,不如在其中进行 lambda 调用更为简洁。

由于这些可以写为表达式,因此它们被称为 Lambda Expression在文档中,而不是 Lambda 函数

另请阅读:Why are Python lambdas useful?

在您给出的示例中,我认为使用 lambda 没有任何用处。

关于python - 为什么使用 Lambda 将函数作为参数发送给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40142302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com