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