Вызовите функцию внутри обёртки, сохраните результат, напечатайте его и верните. Если функция выбросит исключение, печати результата не будет, а ошибка продолжит распространяться.
Декоратор, выводящий значение функции
Вызовите функцию внутри обёртки, сохраните результат, напечатайте его и верните. Если функция выбросит исключение, печати результата не будет, а ошибка продолжит распространяться.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализуйте лёгкий декоратор, который после выполнения целевой функции печатает её возвращаемый результат.
Ответ
Вызовите функцию внутри обёртки, сохраните результат, напечатайте его и верните. Если функция выбросит исключение, печати результата не будет, а ошибка продолжит распространяться.
Минимальный декоратор:
from functools import wraps
def print_result(func):
@wraps(func)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print(result)
return result
return wrapper
Возврат важен: без него декорированная функция всегда возвращала бы None. wraps сохраняет метаданные оригинала. Такой вывод подходит учебному примеру, но в приложении нельзя без разбора печатать результат, который может содержать пароли, токены или персональные данные.