Python中的"lambda"究竟是什么?
我想知道在Python中,lambda
到底是什么?它是用来做什么的,为什么要用它?谢谢!
11 个回答
lambda
让你可以在代码中直接定义简单的、没有名字的函数,比如作为参数使用。这在你只打算用这个函数一次的时候特别有用,这样就不用在代码里放一个有名字的函数,避免让代码看起来乱糟糟的。
假设你有一个数字列表(thelist
),你想得到一个同样长度的新列表,每个数字都变成原来的两倍。与其定义一个叫 times_two
的函数,你可以这样做:
map(lambda x: x * 2, thelist)
lambda
还让 柯里化 变得更方便。
Lambda表达式并不是匿名函数,而是匿名的表达式。
它们的使用方式像函数,但实际上并不完全一样。函数可以处理复杂的任务,比如控制流程、声明变量和包含多个表达式的语句列表。而表达式只是函数的一部分,这就是lambda表达式的作用。相比于函数,lambda的功能非常有限。
Python不支持匿名函数。如果你想看看支持匿名函数的语言,可以看看JavaScript和Lua。
(注意:在函数式编程语言中,称lambda为匿名函数是正确的,因为它们使用的是数学上“函数”的定义,但在过程式编程语言中,这个词的意思和数学中的含义差别很大。)
Lambda其实更多的是一种概念或者编程技巧,而不是其他什么东西。
简单来说,它的意思是你可以从一个函数中得到另一个函数作为结果,而不是得到一个普通的对象或者基本数据类型。我知道,这听起来有点复杂。
看看这个来自Python文档的例子:
def make_incrementor(n):
return lambda x: x + n
f = make_incrementor(42)
f(0)
>>> 42
f(1)
>>> 43
所以,make_incrementor这个函数会创建一个使用n的结果的函数。你可以有一个函数,它可以把一个参数增加2,像这样:
f2 = make_incrementor(2)
f2(3)
>>> 5
这个想法在函数式编程和像lisp和scheme这样的函数式编程语言中非常强大。
希望这对你有帮助。