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
答案 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)