Декораторы · 6 из 14
Привратник
Посылку без адреса оформлять нечего, а программа честно доходила до расчёта и падала уже в середине. Проверку решили поставить на входе — одну на все расчёты, которым нужен адрес.
Что сделать
Поставьте проверку адреса на входе — одну на все расчёты, которым нужен адрес.
Что приходит
rabota— функция одного аргумента — адреса
Что вернуть
Обёртку: адрес пустой или из одних пробелов — "адрес не указан", и rabota не вызывается; иначе — результат rabota с адресом как есть.
Допишите функцию s_proverkoy в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
vyzovy = []
def oformit(adres):
vyzovy.append(adres)
return f"принято: {adres}"
f = s_proverkoy(oformit)
(f('Ленина, 4'), f(' '), f(''), vyzovy)
('принято: Ленина, 4', 'адрес не указан', 'адрес не указан', ['Ленина, 4'])
Функция принимает другую функцию и возвращает обёртку.
Обёртка принимает один аргумент — адрес (строка).
Если в адресе ничего нет, кроме пробелов, исходная функция не вызывается вовсе, а обёртка возвращает строку «адрес не указан». Иначе вызывается исходная функция — с адресом в том виде, в каком он пришёл, — и возвращается её результат.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.