这是将lambda构造转换为普通函数的正确方法吗?

时间:2017-04-19 13:38:16

标签: python lambda

lambda对我来说是新的,我试图通过将lambda转换为普通函数来理解lambda的机制。我看到了这段代码:

def add(n):
    return lambda x: n+x

print add(5)(3)
#output is 8

所以我试着将这段代码转换成一个位于函数内的普通函数:

def add(n):
    def other(x):
        return n+x
    return other(3)

print add(5)
#output is 8

他们的输出是相同的但是因为我是学习lambdas的新手,这是一种改变它们的正确方法吗?还是有比我做的更好的方式?

1 个答案:

答案 0 :(得分:0)

你的第二个例子是有效的代码,但它违背了使用lambda的目的。

通常,您将返回一个lambda来延迟部分执行,直到稍后。你可以在第一个例子中看到。 add返回一个执行数学运算的函数。然后,调用者可以立即调用返回的函数,或者稍后如果他们想要延迟执行,直到它们具有数据的第二部分。

真的,你的第二个例子应该是:

def add(n):
    return n + 3 

因为它无论如何都会立即调用lambda。