为什么使用lambda而不是def?

1 投票
5 回答
802 浏览
提问于 2025-04-16 01:33

有没有什么原因让你选择使用:

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 是一个很方便的工具,适合用来写一些小的、没有名字的函数。不过在这种情况下,使用它没有什么实际意义,只是让喜欢函数式编程的人开心而已。

撰写回答