Декоратор, выводящий значение функции

Вызовите функцию внутри обёртки, сохраните результат, напечатайте его и верните. Если функция выбросит исключение, печати результата не будет, а ошибка продолжит распространяться.

Короткий ответ

Что ответить на собеседовании

Вызовите функцию внутри обёртки, сохраните результат, напечатайте его и верните. Если функция выбросит исключение, печати результата не будет, а ошибка продолжит распространяться.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте лёгкий декоратор, который после выполнения целевой функции печатает её возвращаемый результат.

Ответ

Вызовите функцию внутри обёртки, сохраните результат, напечатайте его и верните. Если функция выбросит исключение, печати результата не будет, а ошибка продолжит распространяться.

Минимальный декоратор:

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 сохраняет метаданные оригинала. Такой вывод подходит учебному примеру, но в приложении нельзя без разбора печатать результат, который может содержать пароли, токены или персональные данные.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее