Уведомления

Группа в Telegram: @pythonsu

#1 Июль 14, 2011 19:01:58

Alala
От:
Зарегистрирован: 2011-07-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример из книжки

Добрый день!

Я начала изучение питона и в книжке Г.Россума нашла такой пример

>>> 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>
дает такой результат, но не возвращает значение?



Офлайн

#2 Июль 14, 2011 19:56:19

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Пример из книжки

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

..bw



Офлайн

#3 Июль 14, 2011 22:45:08

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Пример из книжки

А так понятнее? То же самое, только вместо лямбды обычная функция:

def make_incrementor(n):
def inner_function(x):
return n+x
return inner_function



Офлайн

#4 Июль 14, 2011 23:56:23

Alala
От:
Зарегистрирован: 2011-07-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример из книжки

ZAN bw
Спасибо!
Теперь стало понятнее



Офлайн

#5 Авг. 24, 2011 20:33:58

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример из книжки

Читайте SICP для вящего понимания.



Офлайн

#6 Авг. 26, 2011 11:32:59

Alala
От:
Зарегистрирован: 2011-07-14
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример из книжки

Обедающий философ
интересно, почитаю
жалко, что оно не о питоне



Офлайн

#7 Авг. 28, 2011 13:20:51

Fibio
От:
Зарегистрирован: 2010-09-14
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Пример из книжки

это замыкания или фабричные функции почитайте про них



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version