Декораторы · 4 из 14
Имя не теряется
После того как расчёты обернули журналом, в отчёте об ошибке стало появляться загадочное «obertka»: какая именно из пяти обёрнутых функций упала, из отчёта больше не видно. Справка по функции пропала следом.
Что сделать
Сделайте так, чтобы в отчёте об ошибке снова было видно, какая функция упала.
Что приходит
rabota— функция с любыми аргументами
Что вернуть
Обёртку, которая отдаёт результат rabota без изменений, а её __name__ и __doc__ — как у rabota.
Допишите функцию bez_poter в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
def tarif(gramm):
"""Стоимость по весу в граммах."""
return gramm // 1000 * 100
f = bez_poter(tarif)
(f(2500), f.__name__, f.__doc__)
(200, 'tarif', 'Стоимость по весу в граммах.')
Функция принимает другую функцию и возвращает обёртку.
Обёртка принимает любые аргументы — позиционные и именованные — и возвращает результат исходной функции без изменений. При этом имя обёртки («name») и её описание («doc») совпадают с именем и описанием исходной функции.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.