【发布时间】:2014-01-08 20:25:07
【问题描述】:
前几天我写了一个类似于下面的 lambda:
fetch = lambda x: myDictionaryVariable.get(x, "")
但现在我刚刚了解到,在某种程度上,您可以使用; 而不是换行符来分隔 python 语句,然后了解到即使使用冒号,您也可以在 1 行上执行简单的语句。所以我意识到我也可以这样写:
def fetch(x): return myDictionaryVariable.get(x, "")
不是我在这里使用;,但如果我需要,我可以,从而为我的 1-line 函数提供更多功能。我可以写:
def strangeFetch(x): y = "unicorn"; return menu.get(x, y)
那么为什么我需要 lambdas 呢?为什么它们甚至是 python 的一部分?有鉴于此,他们补充了什么?
【问题讨论】:
-
别着急——每次有人问起 lambda 时,很快就会有票数接近。我怀疑他们是害怕阅读关于 lambda 的坏东西的 Lisp'ers ;-) 顺便说一句,不要对 1-liner disease 着迷:阅读代码的次数多于编写的次数,
strangeFetch()很糟糕。 -
每当有人问“为什么语言 X 设计成这样?”时也会发生这种情况
-
我不知道我是否会以意见为由投票结束;我可能已经投票决定关闭作为一个副本。查看右侧的“相关”问题。
-
Barmar 我确实读过,但我认为我的问题有所不同,因为我专门询问何时使用它们与使用 1 行 def 语句。哦,嘿@TimPeters,我还想知道您是否对我刚刚问的这个问题的最佳实践有任何官方见解:stackoverflow.com/questions/20695516/…
-
并不是没有设计决策的原因,而是对这些原因的讨论不被认为是 SO 的主题。
标签: python function python-3.x lambda