Встречается на собеседованиях • сегодня

Что такое декоратор @wraps в Python

@wraps — это декоратор из модуля functools, который сохраняет метаданные (например, имя, docstring) оригинальной функции при её оборачивании другим декоратором. Без него декорированная функция теряет свои атрибуты, что может затруднить отладку и документирование.

Пример без @wraps:

python
def my_decorator(func):
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

@my_decorator
def say_hello():
"""Документация функции."""
print("Hello!")

print(say_hello.name) # Выведет 'wrapper', а не 'say_hello'
print(say_hello.doc) # Выведет None, а не документацию

text

**Пример с `@wraps`:**
```python
from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

@my_decorator
def say_hello():
    """Документация функции."""
    print("Hello!")

print(say_hello.__name__)  # Выведет 'say_hello'
print(say_hello.__doc__)   # Выведет документацию

Использование @wraps делает код чище и удобнее для работы с интроспекцией (например, help() или dir()).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы