在深入研究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
简化代码的示例吗?
答案 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
没有任何用处。