Лямбда ўнутры лямбда

Проста з цікаўнасці. Выяўлены лямбда некалькі дзён таму. Я быў Jus цікава, калі нешта падобнае, што можа быць зроблена:

(Спрабаваў на інтэрпрэтацыі, але ні адзін з маіх спробаў, здавалася, не працаваць)

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

Там няма яўнага прызначэння. Я проста did'nt знайсці здавальняючы адказ. Я, магчыма, незразумелы лямбда.

2
Так, гэта можа быць зроблена: Паглядзіце на гэта ... rosettacode.org/wiki/Y_combinator#Python
дададзена аўтар jamylak, крыніца

7 адказы

Вы на самой справе не выкліку ўнутраны лямбда :

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

Але зьвярніце ўвагу, у гэтым прыкладзе будзе заўсёды вяртаць 0 , так як рэшта ад дзялення 2 будзе альбо 0 або 1 і цэлалікавых дзяленнем выніку на 2 прывядзе да ўсечанай 0 .

5
дададзена
@JuanGallostra Ах добра, проста падумаў, што варта згадаць, у адваротным выпадку хтосьці іншы. Я выказаў меркаванне, што прыклад быў abritrary ўсё роўна
дададзена аўтар jamylak, крыніца
Python-занадта старая школа.
дададзена аўтар kirelagin, крыніца
Прыклад быў проста ilustrate ідэі. І прапусціў пункт аб тым, каб назваць абедзве функцыі.
дададзена аўтар Juan Gallostra, крыніца

Вы можаце выкарыстоўваць ўнутраную лямбда, каб вярнуць іншую функцыю, заснаваную на знешніх параметрах:

mul = lambda x: (lambda y: y * x)
times4 = mul(4)
print times4(2)
5
дададзена

Вы можаце выкарыстоўваць ўнутраную лямбда, каб вярнуць іншую функцыю, заснаваную на знешніх параметрах:

mul = lambda x: (lambda y: y * x)
times4 = mul(4)
print times4(2)
5
дададзена

Вы можаце выкарыстоўваць ўнутраную лямбда, каб вярнуць іншую функцыю, заснаваную на знешніх параметрах:

mul = lambda x: (lambda y: y * x)
times4 = mul(4)
print times4(2)
5
дададзена

(lambda x: x%2) is a function, and dividing a function by 2 doesn't make any sense. You probably want to call it and divide what the value it returned.

1
дададзена

(lambda x: x%2) is a function, and dividing a function by 2 doesn't make any sense. You probably want to call it and divide what the value it returned.

1
дададзена

(lambda x: x%2) is a function, and dividing a function by 2 doesn't make any sense. You probably want to call it and divide what the value it returned.

1
дададзена