Найти - Пользователи
Полная версия: Пример из книжки
Начало » Python для новичков » Пример из книжки
1
Alala
Добрый день!

Я начала изучение питона и в книжке Г.Россума нашла такой пример
>>> def make_incrementor(n):
... return lambda x, incr=n: x+incr
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43
И совершенно его не поняла.
Какое значение в х изначально? Почему получилось, что мы прибавляем к 42? Если х инициализируется нулем, то почему значение не сбрасывается при новом вызове функции?

Почему вызов
>>> make_incrementor(0)
<function <lambda> at 0x00AB48F0>
дает такой результат, но не возвращает значение?
bw
> дает такой результат, но не возвращает значение?
> return lambda x, incr=n: x+incr
А какое значение должно возвращаться? Из данной строки очевидно что возвращается лямбда, что и происходит на самом деле. Дальнейший вызов этого результат (этой лямбды) приводит к выполнению выражения x+incr. Так как в лямбду мы передаёт только один аргумент, то incr является значением по умолчанию, т.е. n, т.е. 42.
Лямбда это анонимная функция, в двух словах.

..bw
ZAN
А так понятнее? То же самое, только вместо лямбды обычная функция:
def make_incrementor(n):
def inner_function(x):
return n+x
return inner_function
Alala
ZAN bw
Спасибо!
Теперь стало понятнее
Обедающий философ
Читайте SICP для вящего понимания.
Alala
Обедающий философ
интересно, почитаю
жалко, что оно не о питоне
Fibio
это замыкания или фабричные функции почитайте про них
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB