Встречается на собеседованиях • сегодня
Как написать функцию с использованием декоратора, чтобы не терять доступ к исходной функции в Python
Для сохранения доступа к исходной функции при использовании декоратора нужно использовать functools.wraps. Это сохранит метаданные оригинальной функции (имя, docstring и т.д.) и позволит обращаться к ней напрямую через атрибуты.
Пример:
python
from functools import wraps
def my_decorator(func):
@wraps(func) # Сохраняет метаданные оригинальной функции
def wrapper(*args, **kwargs):
print("Дополнительная логика перед вызовом")
result = func(*args, **kwargs)
print("Дополнительная логика после вызова")
return result
return wrapper
@my_decorator
def my_function():
"""Оригинальная функция"""
print("Основная логика")
Доступ к оригинальной функции через wrapped
original_func = my_function.wrapped
original_func() # Вызовет оригинальную функцию без декоратора
text
Ключевые моменты:
1. `@wraps(func)` сохраняет метаданные
2. Оригинальная функция доступна через `__wrapped__`
3. Декоратор не изменяет поведение оригинальной функции, только добавляет логику вокруг
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы