0

Как создать и использовать декораторы (decorators) в Python?

В Python декораторы (decorators) — это мощный инструмент, позволяющий изменять поведение функций и классов без необходимости изменять их исходный код. Декораторы позволяют добавить дополнительную функциональность к уже существующим объектам, делая код более читаемым и модульным.

Декораторы в Python являются функциями, которые принимают в качестве аргумента другую функцию и возвращают новую функцию. В простейшем случае, декоратор может использоваться для добавления дополнительной логики до или после выполнения функции, без необходимости изменения самой функции.

Рассмотрим пример декоратора, который замеряет время выполнения функции:

«`
import time

def timer_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
execution_time = end_time — start_time
print(f»Функция {func.__name__} выполнилась за {execution_time} секунд»)
return result
return wrapper

@timer_decorator
def my_function():
time.sleep(2)
print(«Выполнение функции my_function»)

my_function()
«`

В данном примере мы определили декоратор `timer_decorator`, который принимает функцию `func` в качестве аргумента. Декоратор создает внутри себя новую функцию `wrapper`, которая выполняет измерение времени выполнения и вызывает оригинальную функцию `func`. Затем декоратор возвращает новую функцию `wrapper`.

Обратите внимание на использование символа `@` перед объявлением функции `my_function`. Это синтаксический сахар, позволяющий применить декоратор к функции при ее объявлении. То есть, функция `my_function` будет автоматически обернута декоратором `timer_decorator`.

При выполнении кода мы увидим следующий вывод:

«`
Выполнение функции my_function
Функция my_function выполнилась за 2.003849983215332 секунд
«`

Таким образом, мы успешно создали и применили декоратор в Python. Декораторы могут быть очень полезными для реализации различных задач, таких как логгирование, кэширование, валидация и многих других. Благодаря декораторам код становится более элегантным и поддерживаемым.

Tovarystva Radnyk

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *