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

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

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

import time

def timer_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"Time taken to execute {func.__name__}: {end_time - start_time} seconds")
        return result
    return wrapper

@timer_decorator
def some_function():
    # some code here
    pass

some_function()

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

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

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

Автор урока

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

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

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

  1. Метод bool() в Python
  2. Библиотека schedule: планировщик задач
  3. Операции с комплексными числами
  4. Генераторы в Python
  5. Модуль future Python
  6. Установка максимального количества цифр
  7. Именованные срезы в Python
  8. Декораторы в Python
  9. Частичное совпадение пользовательского ввода в Python 3.10
  10. discard() — удаление элемента из множества
  11. Numpy: использование Ellipsis
  12. Документация функции help() в Python
  13. Многоточие в Python
  14. Работа с timedelta
  15. Копирование объектов в Python
  16. Выражения-генераторы в Python
  17. Работа с набором данных CIFAR10 в PyTorch
  18. Генераторные функции в Python
  19. Функция pow() — возвести число в степень
  20. Управление браузером с Selenium
  21. Операторы увеличения и уменьшения переменной
  22. Таймер обратного отсчета
  23. Список переменных с %who
  24. Создание циклической ссылки
  25. Логирование с Logzero: ротация файла
  26. Функция print() — вывод информации
  27. Блок else в циклах Python
  28. Работа с функцией next() в Python
  29. Функция product() из itertools
  30. Генераторы в Python
  31. Функция map() и ленивая оценка
  32. Управление пакетами с pip
  33. Вывод баннеров
  34. Упрощение условных выражений с тернарным оператором
  35. Модуль inspect: получение информации о объектах
  36. Операторы присваивания в Python
  37. Аннотации типов в Python
  38. Округление в Python
  39. Работа со стеком в Python
  40. Динамическая типизация в Python
  41. Реализация операции -= для пользовательского класса
  42. Оператор Walrus в Python 3.8
  43. Переворот строки с использованием цикла
  44. Python Метод sleep() времени

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