This question already has answers here:
Why are Python lambdas useful? [closed]

(26个答案)


7年前关闭。




前几天,我写了一个类似于以下内容的lambda:
fetch = lambda x: myDictionaryVariable.get(x, "")

但是现在我刚刚了解到,您可以使用;而不是换行符来分隔python语句,然后知道即使使用冒号也可以在1行上执行简单的语句。所以我意识到我也可以这样写:
def fetch(x): return myDictionaryVariable.get(x, "")

不是说我在这里使用;,而是如果需要的话,可以为我的1行函数提供更多功能。我可以写:
def strangeFetch(x): y = "unicorn"; return menu.get(x, y)

那么,为什么我完全需要lambda?为什么它们甚至是python的一部分?有鉴于此,他们增加了什么?

最佳答案

  • Lambda函数不需要名称。它们不会仅将函数使用一次而阻塞您的 namespace 。
    a = [[1], [1, 2], [1, 2, 3]]
    print min(a, key = lambda x:len(x))
    print locals()
    

    如您所见,尽管我们创建了一个lambda函数(在这种情况下,我们可以直接使用len),但它不会添加到本地 namespace 中。
  • 它们是use和throw类型的函数。除非将它们分配给某些变量,否则可以在使用它们的行之后对其进行GC。
  • 它们不允许执行任何python语句和赋值,因此它们因副作用而很少被信任。
    l = [1, 2]
    lambda: l = []
    

    这将引发错误SyntaxError: can't assign to lambda。 (不过,您可以更改可变对象)。
  • 有时,它们可以用来击败闭包的效果。
  • 关于python - 为什么要使用lambda与1行函数声明?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20695745/

    10-11 23:02
    查看更多