Форум сайта python.su
0
Добрый день!
Я начала изучение питона и в книжке Г.Россума нашла такой пример
>>> def make_incrementor(n):
... return lambda x, incr=n: x+incr
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43
>>> make_incrementor(0)
<function <lambda> at 0x00AB48F0>
Офлайн
20
> дает такой результат, но не возвращает значение?
> return lambda x, incr=n: x+incr
А какое значение должно возвращаться? Из данной строки очевидно что возвращается лямбда, что и происходит на самом деле. Дальнейший вызов этого результат (этой лямбды) приводит к выполнению выражения x+incr. Так как в лямбду мы передаёт только один аргумент, то incr является значением по умолчанию, т.е. n, т.е. 42.
Лямбда это анонимная функция, в двух словах.
..bw
Офлайн
10
А так понятнее? То же самое, только вместо лямбды обычная функция:
def make_incrementor(n):
def inner_function(x):
return n+x
return inner_function
Офлайн
0
ZAN bw
Спасибо!
Теперь стало понятнее
Офлайн
0
Читайте SICP для вящего понимания.
Офлайн
0
Обедающий философ
интересно, почитаю
жалко, что оно не о питоне
Офлайн
2
это замыкания или фабричные функции почитайте про них
Офлайн