training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Создаем простой декоратор Python

Создано: 20 января 2025Автор: Егор Астапов79 просмотровСложность: легкий

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

  1. логирование
  2. повторение
  3. валидация входных параметров
  4. учёт времени работы
  5. подмена функции на тестовую функцию
  6. кеш

Декораторы могут накладываться друг на друга. В этом случае они работают по очереди.

#!/usr/local/bin/python

import time
from functools import wraps

def decorator(trace=True):
def on_decorator(func):
@wraps(func)
def on_call(*args, **kargs):
start = time.time()
result = func(*args, **kargs)
end = time.time() - start
if trace:
print(round(end, 4))
return result
return on_call
return on_decorator

@decorator(True)
def sum_test(x, y):
time.sleep(1.2)
return x + y

print(sum_test(1, 3))

На собеседованиях очень часто спрашивают о декораторах. Вы должны легко писать декораторы. На лайвкодингах вас могут попросить написать несложный декоратор.

Еще есть такой шаблон проектирования - декоратор. Он тоже на класс накидывает нужные свойства. Не запутайтесь )

Комментарии

реклама