Курс Python → Декораторы в Python

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

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


import time

def timer(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"Время выполнения функции {func.__name__}: {end_time - start_time} секунд")
        return result
    return wrapper

@timer
def some_function():
    # код функции

В данном примере декоратор timer измеряет время выполнения функции some_function и выводит результат на экран. При вызове функции some_function сначала будет выведено время выполнения, а затем будет выполнен основной код функции.

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

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Необязательные аргументы в Python
  2. Управление асинхронными задачами на Python.
  3. Определение относительного пути
  4. Метод ifloordiv для пользовательских классов
  5. Поиск шаблона в начале строки
  6. Создание обратного итератора
  7. Функции высшего порядка в Python
  8. Функция zip() в Python
  9. Транспонирование матрицы
  10. Метод index() в Python
  11. Python и Монти Пайтон
  12. Улучшенные подсказки для импорта в Python 3.12
  13. Получение текущей даты и времени с помощью datetime
  14. Создание OrderedDict
  15. Генерация случайных чисел в Python
  16. ChainMap.new_child() — добавление нового словаря
  17. F-строки в Python 3.8
  18. Генерация строк с .join()
  19. Python: отсутствие точек с запятыми
  20. Оператор «not» в Python
  21. Фильтрация списков с itertools
  22. Избегание циклических зависимостей классов в Python
  23. Создание копии итератора
  24. Метод join для объединения строк
  25. Установка и использование Python-dateutil
  26. Big O оптимизация
  27. Принципы программирования
  28. Сравнение строк в Python
  29. Создание новых списков через list comprehensions
  30. Инверсия списка/строки в Python
  31. Реализация операции -= для пользовательского класса
  32. Подписка на SelectelNews в Twitter
  33. Базовые объекты Python
  34. Избегайте использования goto
  35. Философия Python
  36. Генерация случайных чисел в Python
  37. Создание списков в Python
  38. Подсчет элементов с помощью Counter из collections
  39. Установка виртуального окружения Python
  40. Ключевое слово global в Python

Marketello читают маркетологи из крутых компаний