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

标签 python lambda

在深入研究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/

相关文章:

python - 无法使用 Nose 测试运行测试

python - 如何使用 gitlab-ci 管理相互依赖的轮子的测试/构建

python - 将变量转换为lambda中另一个变量的类型

c++ - C++14 中的递归 lambda 函数

asp.net-mvc-2 - MVC Html.TextBoxFor MaxLength 和 Value

java - 在 Stream API 中使用 checked 装饰器函数是好的解决方案吗?

python regex - 如何拆分日期模式上的字符串 - 仅保留日期模式第二次出现后的值

android - Kivy 和 android 通知

python - 与 python 方法中的 self 参数混淆(不属于任何类的方法)

node.js - AWS Lambda 突然不工作