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

Обёртка печатает имя и args, вызывает функцию, печатает её результат и возвращает его. В полном примере Result: 8 появится дважды: один раз в декораторе и ещё раз во внешнем print.

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

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

Обёртка печатает имя и args, вызывает функцию, печатает её результат и возвращает его. В полном примере Result: 8 появится дважды: один раз в декораторе и ещё раз во внешнем print.

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

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

Условие

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

import functools

def log_execution(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        # TODO: добавить вывод информации о вызове
        pass
    return wrapper

@log_execution
def add_numbers(x, y):
    return x + y

# Проверка работы декоратора
outcome = add_numbers(3, 5)
print("Result:", outcome)

# Ожидаемый вывод:
# Executing function: add_numbers
# Arguments: (3, 5)
# Result: 8

Ответ

Обёртка печатает имя и args, вызывает функцию, печатает её результат и возвращает его. В полном примере Result: 8 появится дважды: один раз в декораторе и ещё раз во внешнем print.

Учебная реализация для нечувствительных данных:

import functools

def log_execution(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print(f'Executing function: {func.__name__}')
        print(f'Arguments: {args}')
        result = func(*args, **kwargs)
        print(f'Result: {result}')
        return result
    return wrapper

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

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

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

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

Подробнее