Назад к вопросам
Junior
71
questionbank
Что возвращает декоратор?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Декоратор в Python возвращает функцию (или любой другой вызываемый объект), которая заменит декорируемую функцию.
def my_decorator(func):
def wrapper(*args, **kwargs):
print("Перед вызовом функции")
result = func(*args, **kwargs) # Вызов исходной функции
print("После вызова функции")
return result
return wrapper # Декоратор возвращает внутреннюю функцию wrapper
@my_decorator
def say_hello():
print("Привет!")
say_hello()
# Вывод:
# Перед вызовом функции
# Привет!
# После вызова функции
Основные моменты:
- Декоратор принимает декорируемую функцию в качестве аргумента.
- Внутри декоратора определяется новая функция (обычно называемая
wrapperилиdecorator_func). - Эта новая функция содержит логику, которую декоратор добавляет (до или после вызова исходной функции).
- Новая функция вызывает исходную функцию.
- Декоратор возвращает эту новую функцию.
Таким образом, когда функция декорируется с помощью @decorator_name, по сути происходит следующее:
def original_function():
pass
original_function = decorator_name(original_function)
Получается, что имя original_function теперь ссылается на функцию, возвращенную decorator_name.