你为什么要使用lambda而不是def?

时间:2010-07-20 09:02:15

标签: python lambda

是否有任何理由可以让您使用:

add2 = lambda n: n+2

而不是:

def add2(n): return n+2

我倾向于选择def方式,但我偶尔会看到lambda方式。

编辑:
问题不在于lambda作为未命名的函数,而是关于lambda作为命名的函数。

对同一个问题here有一个很好的答案。

5 个答案:

答案 0 :(得分:3)

lambda对于小型未命名的函数很有用,但在这种情况下,除了让功能主义者感到高兴之外,它没有用处。

答案 1 :(得分:2)

我通常将lambda用于一次性函数,我将仅在一个地方使用,例如作为函数的参数。这使逻辑保持在一起,并避免使用我不需要的函数名填充命名空间。

例如,我认为

map(lambda x: x * 2,xrange(1,10))

比以下更整洁:

def bytwo(x):
    return x * 2

map(bytwo,xrange(1,10))

答案 2 :(得分:1)

Guido Van Rossum(Python的创建者)更喜欢def over lambdas(lambdas只在最后moment创建了Python 3.0)并且没有什么你不能用def做的lambdas

喜欢函数式编程范式的人似乎更喜欢它们。有时使用匿名函数(可以使用lambda表达式创建)可以提供更易读的代码。

答案 3 :(得分:1)

我记得David Mertz writing他更喜欢使用add2 = lambda n: n+2形式,因为它强调add2是一个没有副作用的纯函数。但是我认为99%的Python程序员会使用def语句并且只使用lambda来表示匿名函数,因为它就是它的目的。

答案 4 :(得分:0)

您无法使用def的一个地方是表达式:def是一个声明。这是我唯一使用lambda的地方。