Lambda内部的lambda

9

只是出于好奇,几天前发现了Lambda表达式。我在想是否可以做类似这样的事情:

(尝试在解释器上但我的尝试似乎都没有成功)

p = lambda x: (lambda x: x%2)/2

没有明确的目标。我只是没有找到令人满意的答案。我可能对Lambda函数有所误解。


1
可以做到:看这个... http://rosettacode.org/wiki/Y_combinator#Python - jamylak
3个回答

13
你可以使用内部 Lambda 表达式,根据外部参数返回另一个函数:
mul = lambda x: (lambda y: y * x)
times4 = mul(4)
print times4(2)

1
你好,Haskell,Python 想念你。 - jcchuks

7

你实际上并没有调用内部的 lambda

p = lambda x: (lambda x: x%2)(x)/2

请注意,在Python 2中,这个例子将始终返回0,因为除以2得到的余数只能是01,将该结果整除2会导致截断的0


这个例子只是为了说明这个想法,而忽略了需要调用两个函数的要点。 - Juan Gallostra
@JuanGallostra 哦,好的,我只是觉得值得一提,否则其他人可能会这样做。我本来就认为这个例子是任意的。 - jamylak

1

(lambda x: x%2)是一个函数,除以2没有任何意义。您可能想要调用它并将返回的值进行除法运算。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接