【发布时间】:2013-12-02 03:58:09
【问题描述】:
我了解它们的作用以及如何使用它们,但我仍然对为什么将它们包含在 Python 中感到有些困惑。与普通的函数定义风格相比,使用它们有什么好处?
我能想到的唯一真正区别是您可以在表达式中创建它们。例如,如果 myList 是一个整数列表,并且您想为每个元素添加一个,则可以使用
list(map(lambda x: x+1, myList))
如果你想用函数定义来做到这一点,你必须在别处定义它,然后传递那个变量。
但是,我严重怀疑这种相对较小的便利是否能证明将它们包含在语言中是合理的,所以我猜我缺少一些东西。或者,也许,我低估了能够在这样的行内创建函数的用处。
所以,这基本上是我的问题 - lambda 应该用于什么?为什么包括它们?
【问题讨论】:
-
真的就是这样。
-
一个 lambda 是一个匿名函数,这意味着你只是暂时需要它。它有点像 Python 中的函数式编程。
-
你没有错过任何东西。我相信我在某个地方读到 Guido 实际上想根据您的确切推理为 Python 3 对它们进行核对。
-
看在上帝的份上,将其搁置为“基于意见”是愚蠢的:虽然人们可以对他们是否喜欢 lambda有意见,但问题是他们为什么喜欢在语言中。我解释了这一点(当时我在那里),并提供了一个指向 Python 的创建者解释为什么它们使用该语言的博客文章的链接。这不是意见,这是事实。