您能否举一个示例以及其他示例来说明何时以及何时不使用Lambda?我的书给了我一些例子,但它们令人困惑。
Lambda源自Lambda演算(AFAIK),最初是在Lisp中实现的,它基本上是一个匿名函数- 该函数没有名称,可以在线使用,换句话说,您可以将标识符分配给lambda函数在单个表达式中如下所示:
>>> addTwo = lambda x: x+2 >>> addTwo(2) 4
这将分配addTwo给匿名函数,该函数接受1个参数x,并且在函数主体中将2加到x,它返回函数主体中最后一个表达式的最后一个值,因此没有return关键字。
addTwo
return
上面的代码大致等效于:
>>> def addTwo(x): ... return x+2 ... >>> addTwo(2) 4
除了不使用函数定义外,您还要为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'
在此示例中,我真的不想为这些函数中的任何一个定义名称,因为我只会在哈希中使用它们,因此,我将使用lambda。