Печать возвращаемого значения любой функции

Сохраните результат вызова, выведите его через print и верните без изменений. Используйте wraps и произвольные аргументы обёртки.

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

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

Сохраните результат вызова, выведите его через print и верните без изменений. Используйте wraps и произвольные аргументы обёртки.

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

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

Условие

Создайте декоратор, который:

  • Принимает любую функцию в качестве аргумента;
  • Выполняет эту функцию;
  • После её завершения выводит в консоль результат, полученный от функции.

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

Ответ

Сохраните результат вызова, выведите его через print и верните без изменений. Используйте wraps и произвольные аргументы обёртки.

from functools import wraps

def print_result(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        print(result)
        return result
    return wrapper

Если исходная функция вызывает исключение, оно распространяется как раньше, а результат не печатается, поскольку его нет. Возвращать print(result) нельзя: print возвращает None.

Этот вариант предназначен для синхронных функций. Для корутин необходима async-обёртка с result = await func(...); генератор же вернёт объект генератора, а не автоматически перечисленные элементы. Не применяйте такую диагностику к секретным или персональным результатам без безопасного форматирования.

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

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

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

Подробнее