是否有任何理由可以让您使用:
add2 = lambda n: n+2
而不是:
def add2(n): return n+2
我倾向于选择def
方式,但我偶尔会看到lambda
方式。
编辑:
问题不在于lambda
作为未命名的函数,而是关于lambda作为命名的函数。
对同一个问题here有一个很好的答案。
答案 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
的地方。