Python lambda - 在这种情况下是否必要?

时间:2014-10-24 05:25:07

标签: python lambda

lambda xxx: foo(xxx) - 它与foo完全相同吗? 在建筑中使用像 map(lambda xxx: foo(xxx), my_things)

我没有看到任何区别:

def plus(a):
    return a+1
for i in map(plus, [1,2,3]):
    print(i)
for i in map(lambda a: plus(a), [1,2,3]):
    print(i)

打印相同的

2
3
4

2 个答案:

答案 0 :(得分:4)

不,lambda x: foo(x)foo(x)不同,而是foo。 eta减少是lambda x: foo(x)foo的转换。

map(lambda a: plus(a), [1,2,3])map(plus, [1,2,3])相关联,将lambda a: plus(a)替换为plus eta缩减规则的应用。

答案 1 :(得分:2)

是的,没错。 lambda x: foo(x)与调用foo(x)相同。

请记住,lambda只是一个匿名函数,可以对x执行某些操作。在这种情况下,它只需在foo上调用x并返回foo(x)的结果。

例如,调用(lambda x: foo(x), 60)与执行此操作类似:

def function2(y):
    return y*2

def function1(x):
    return function2(x)

function1(60)