Функции · 28 из 29
Не считать дважды
Задействованы также: Словари
Расчёт стоимости по каталогу запчастей идёт долго, а одни и те же артикулы Валера запрашивает по десять раз за день.
Что сделать
Научите долгий расчёт по каталогу запоминать ответы, чтобы не считать одно и то же дважды.
Что приходит
rabota— функция одного аргумента; считает долго
Что вернуть
Функцию с тем же ответом, но на уже виденный аргумент rabota больше не вызывается — ответ из памяти.
Допишите функцию s_pamyatyu в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
dolgaya записывает каждый свой вызов. Обёртку зовут три раза с 5: ответ всегда 50, а dolgaya вызвана один раз — в записи [5].
Функция принимает другую функцию одного аргумента.
Возвращает функцию с тем же поведением, но запоминающую ответы: на повторный аргумент исходная функция вызываться не должна. Аргумент может быть любым значением, которое годится в ключи словаря.
Образцовый тест целиком
vyzovy = []
def dolgaya(x):
vyzovy.append(x)
return x * 10
bystraya = s_pamyatyu(dolgaya)
bystraya(5)
bystraya(5)
(bystraya(5), vyzovy)
(50, [5])
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.