Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: decorators

Зачем нужен wraps?

Этот вопрос проверяет знание роли functools.wraps в создании декораторов и его влияния на метаданные функции.

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

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

Длинный ответ

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

Пример:

from functools import wraps

def my_decorator(func):
    	@wraps(func)
    	def wrapper(*args, **kwargs):
        	print("Декоратор сработал!")
        	return func(*args, **kwargs)
    	return wrapper

@my_decorator
def say_hello():
    	"""Говорит привет."""
    	return "Hello!"

print(say_hello.__name__)  # say_hello
print(say_hello.__doc__)   # Говорит привет.

Без @wraps вместо оригинального имени функции say_hello и её документации будет отображаться информация о функции wrapper.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Python

    Python

Ключевые слова

#decorators

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.