Функции · 29 из 29
Со счётчиком вызовов
Расчёт по каталогу запчастей идёт долго, и Валера хочет знать, сколько раз за день его вообще дёргают. Трогать сам расчёт при этом нельзя: он работает, и лезть в работающее — отдельная беда.
Что сделать
Посчитайте, сколько раз дёргают расчёт по каталогу, — не трогая сам расчёт.
Что приходит
rabota— функция с любыми аргументами
Что вернуть
Обёртку, которая ведёт себя точно как rabota, считает свои вызовы в поле vyzovy (сначала 0) и носит её имя в __name__.
Допишите функцию s_uchetom в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Обёртка над slozhit вызвана трижды: третий вызов (5, 6) отдаёт 11, в vyzovy — 3, а __name__ — "slozhit", как у исходной.
Функция принимает другую функцию.
Возвращает обёртку, которая ведёт себя точно как исходная: принимает любые аргументы — позиционные и именованные — и возвращает её результат. Кроме того, обёртка считает вызовы в своём поле vyzovy (до первого вызова там ноль) и сохраняет имя исходной функции в __name__.
Образцовый тест целиком
def slozhit(a, b):
return a + b
schitannaya = s_uchetom(slozhit)
schitannaya(1, 2)
schitannaya(3, 4)
(schitannaya(5, 6), schitannaya.vyzovy, schitannaya.__name__)
(11, 3, 'slozhit')
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.