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

Создайте обёртку, которая печатает func.__name__, затем вызывает функцию с исходными аргументами и возвращает результат. Используйте functools.wraps для сохранения метаданных.

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

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

Создайте обёртку, которая печатает func.name, затем вызывает функцию с исходными аргументами и возвращает результат. Используйте functools.wraps для сохранения метаданных.

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

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

Условие

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

Ответ

Создайте обёртку, которая печатает func.name, затем вызывает функцию с исходными аргументами и возвращает результат. Используйте functools.wraps для сохранения метаданных.

Реализация:

from functools import wraps

def print_name(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print(func.__name__)
        return func(*args, **kwargs)
    return wrapper

Применение @print_name над функцией эквивалентно присваиванию function = print_name(function). Имя печатается при каждом вызове, не в момент определения. Обёртка не перехватывает исключения и поддерживает как позиционные, так и именованные аргументы; для методов self передаётся обычным образом.

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

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

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

Подробнее