【问题标题】:What if the lambda function does not have any argument in python3?如果 lambda 函数在 python3 中没有任何参数怎么办?
【发布时间】:2020-08-31 03:34:42
【问题描述】:
最近看了一行代码,不明白什么意思,代码是
import collections
d = collections.defaultdict(lambda : [-1, -1, -1])
我对这里的lambda 感到困惑。我只知道lamnda x: x+1。通常,我们有一个lambda 的参数。如果我们没有像这段代码这样的参数怎么办?
非常感谢,
【问题讨论】:
标签:
python-3.x
lambda
arguments
【解决方案1】:
是的,我们可以定义一个不带任何参数的 lambda 函数。但是,这将是无用的,因为没有什么可操作的。让我们看一个简单的例子。
get_5 = lambda: 5
print(get_5()) # 5
由于 lambda 函数总是返回相同的值,我们可以给它分配一个变量。使用不带任何参数的 lambda 函数是对这个特性的明显滥用。
d = collections.defaultdict([-1, -1, -1])
产生错误:
TypeError: first argument must be callable or None
因为 list 是不可调用的,但 lambda 函数是可调用的。
【解决方案2】:
即使在 python 中没有 lambda 变量,也可以有效地使用 Lambda 函数。
lambda函数的一般使用流程如下所示
在一般功能使用情况下是
def identity(x):
return x+1
在 lambda 的情况下
lambda x:x+1
无变量
lambda :x
将返回与 x 相同的结果。
没有变量,lambda 函数在没有任何操作的情况下保持空闲,因此可以在没有变量的情况下使用它来获得相同的答案。
在没有动作变量的情况下精确使用 lambda 只是额外的一行代码。但它是有效的。