为什么使用lambda而不是def?
有没有什么原因让你选择使用:
add2 = lambda n: n+2
而不是:
def add2(n): return n+2
我个人比较喜欢用def
的方式,但偶尔也会看到用lambda
的方式。
补充说明:
这个问题不是在讨论lambda
作为无名函数,而是讨论lambda
作为一个有名函数。
关于这个问题,有一个很好的答案可以在这里找到。
5 个回答
1
Python的创始人Guido Van Rossum更喜欢使用def来定义函数,而不是使用lambda(lambda表达式直到Python 3.0才被引入,真是最后一刻才来的)。其实,用def定义的函数能做的事情,lambda也都能做到。
喜欢函数式编程的人似乎更倾向于使用lambda。有时候,使用匿名函数(也就是用lambda表达式创建的函数)可以让代码看起来更清晰易懂。
2
我通常会用一个叫做“lambda”的东西来写那些只用一次的函数,比如作为另一个函数的参数。这样可以把逻辑放在一起,避免在命名空间里出现我不需要的函数名。
举个例子,我觉得:
map(lambda x: x * 2,xrange(1,10))
比下面这个更简洁:
def bytwo(x):
return x * 2
map(bytwo,xrange(1,10))
4
lambda
是一个很方便的工具,适合用来写一些小的、没有名字的函数。不过在这种情况下,使用它没有什么实际意义,只是让喜欢函数式编程的人开心而已。