Войти Создать аккаунт

Декораторы · 13 из 14

Со скобками и без

Пометку к записям в журнале завели общую, а потом понадобилось иногда ставить свою. Переписывать полтора десятка мест, где декоратор уже стоит без скобок, никто не захотел — значит, он должен работать в обоих видах.

Что сделать

Сделайте декоратор пометки, который работает и со скобками, и без, — чтобы не переписывать полтора десятка мест.

Что приходит

  • rabota — функция, когда декоратор стоит без скобок: @otmetit

  • pometka — своя пометка, только по имени: @otmetit(pometka="срочно"); без неё — «обычная»

Что вернуть

Обёртку, которая отдаёт строку функции с пометкой спереди: "[срочно] посылка принята", без пометки — "[обычная] …"; имя сохраняется.

Допишите функцию otmetit в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

Перед вызовом
@otmetit
def zapis(chto):
    return chto

@otmetit(pometka="срочно")
def srochnaya(chto):
    return chto
Вызов
(zapis('посылка принята'), srochnaya('посылка принята'))
Вернуть
('[обычная] посылка принята', '[срочно] посылка принята')
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.