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

时间:2016-10-19 22:05:58

标签: 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真正"闪耀&#34 ;?的例子可能是使用lambda简化代码的示例吗?

1 个答案:

答案 0 :(得分:3)

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)]

在这里,我按索引my_list的递增顺序排序0,然后按索引1的降序排序。但list.sort()接受key的值作为函数。不是定义函数然后在这里传递该函数,而是在其中进行lambda调用更清晰。

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

另请阅读:Why are Python lambdas useful?

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