Why use lambdas vs 1-line function declarations?
前几天我写了一个类似于以下内容的lambda:
1 | fetch = lambda x: myDictionaryVariable.get(x,"") |
但现在我刚刚了解到,在某种程度上,您可以使用
1 | def fetch(x): return myDictionaryVariable.get(x,"") |
不是说我在这里使用的是
1 | def strangeFetch(x): y ="unicorn"; return menu.get(x, y) |
那我干嘛要羔羊肉呢?为什么它们甚至是Python的一部分?鉴于此,他们还补充了什么?
Lambda functions don't need a name.他们不关闭你的名称空间只是为了一个只使用过一次的功能。
1 2 3 | a = [[1], [1, 2], [1, 2, 3]] print min(a, key = lambda x:len(x)) print locals() |
如你所见,尽管我们创建了一个LAMBDA函数(在这个情况下,我们可以直接使用EDOCX1&1),但它不添加到本地名称。
它们的使用和螺旋型功能。他们可能在他们所使用的线路之后被告知,但他们被指定为某些变量。
他们不允许任何言论和传唤,因此他们可以信赖副作用。
ZZU1
这将纠正错误,
有时候,它们可以被用来克服封闭的影响。
当你想使用匿名函数作为另一函数的参数时,它是有用的。如果这只是在某个地方使用的话,就没有必要为它指定一个名字。
在语言正交性之外分配一个可变的LAMBDA的能力:一个可变的可变的可持有任何类型的值,而由LAMBDA创建的函数只是一个值。
a lambda expression is itself a value,in a way that a def statement isn't.This is because a def statement is essentially a function literal+an assignment,and in python an assignment isn't an expression.
但你不需要兰巴达你可以用一个名字的功能做任何事情。