您能举例说明何时何何不使用Lambda?我的书给了我一些例子,但它们令人困惑.
med*_*iev 39
源自Lambda Calculus和(AFAIK)的Lambda最初是在Lisp中实现的,它基本上是一个匿名函数 - 一个没有名称的函数,并且在线使用,换句话说,你可以为一个标识符分配一个标识符. lambda函数在单个表达式中如下:
>>> addTwo = lambda x: x+2
>>> addTwo(2)
4
Run Code Online (Sandbox Code Playgroud)
这将分配addTwo给匿名函数,该函数接受1个参数x,并且在函数体中它将2添加到x,它返回函数体中最后一个表达式的最后一个值,因此没有return关键字.
上面的代码大致相当于:
>>> def addTwo(x):
... return x+2
...
>>> addTwo(2)
4
Run Code Online (Sandbox Code Playgroud)
除非您没有使用函数定义,否则您将为lambda分配一个标识符.
使用它们的最好的地方是,当你真的不希望定义一个函数的名称,可能是因为该功能将只使用一个时间,而不是无数次,在这种情况下,你将与一个函数定义更好.
使用lambdas的哈希树示例:
>>> mapTree = {
... 'number': lambda x: x**x,
... 'string': lambda x: x[1:]
... }
>>> otype = 'number'
>>> mapTree[otype](2)
4
>>> otype = 'string'
>>> mapTree[otype]('foo')
'oo'
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我真的不想为这些函数中的任何一个定义一个名称,因为我只在哈希中使用它们,因此我将使用lambdas.