Что нужно сделать
При работе с сетью и веб-сервисами иногда используется функция callback
, так называемая функция обратного вызова. Это функция, которая вызывается при срабатывании определённого события (переходе на страницу, получении сообщения или окончании обработки процессором). В неё можно передать функцию, чтобы она выполнилась после определённого события. Это используется, например, в HTTP-серверах в ответ на URL-запросы. Реализуйте такую функцию.
Пример функции:
@callback('//')
def example():
print('Пример функции, которая возвращает ответ сервера')
return 'OK'
Основной код:
route = app.get('//')
if route:
response = route()
print('Ответ:', response)
else:
print('Такого пути нет')
Ожидаемый результат:
Пример функции, которая возвращает ответ сервера
Ответ: OK
Подсказка: функция callback
может быть вызвана следующим действием в зависимости от условия или просто так.
Что оценивается
- Результат вычислений корректен.
- Формат вывода соответствует примеру.
- Переменные, функции и собственные методы классов имеют значащие имена, не
a
,b
,c
,d
. - Классы и методы/функции имеют прописанную документацию.
- Есть аннотация типов для методов/функций и их аргументов (кроме
args
иkwargs
). Если функция/метод ничего не возвращают, то используетсяNone
.
app = {}
def callback(route: str):
"""Функция обратного вызова"""
def decorator(func):
app[route] = func
def inner(*args, **kwargs):
result = func(*args, **kwargs)
return result(*args, **kwargs)
return inner
return decorator
@callback('//')
def example():
print('Пример функции, которая возвращает ответ сервера')
return 'OK'
route = app.get('//')
if route:
response = route()
print('Ответ:', response)
else:
print('Такого пути нет')