Курс 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. Проверка наличия элемента в списке
  2. Python: цикл for и оператор присваивания
  3. Установка и использование Logzero
  4. Перехват исключений в Python
  5. Встраивание HTML в Jupyter Notebook
  6. Подсказки при вводе данных в Python
  7. Python Enum Weekday Usage
  8. Mad Libs Generator
  9. Преобразование данных в Python
  10. Создание тестовых данных с Faker
  11. Переворот строки с помощью срезов
  12. Декораторы в Python
  13. Библиотека Emoji: использование смайлов в Python
  14. Ветвление выражения в Python
  15. Константы в модуле cmath
  16. Непрерывная проверка в Python
  17. Умножение строк и списков
  18. Чтение и запись TOML-конфигов
  19. Преобразование Excel в PDF с Spire.XLS
  20. Замена переменных в Python
  21. Работа с комплексными числами
  22. Генераторные выражения и islice.
  23. PATCH-запрос с библиотекой requests
  24. Метод eq для сравнения объектов
  25. Разность множеств
  26. Работа с аргументами командной строки
  27. Оценка выражений генератора в Python
  28. ChainMap.new_child() — добавление нового словаря
  29. Основные операции с библиотекой Numpy
  30. Инициализация структур данных
  31. Открытие и запись файлов
  32. Управление пакетами с pip
  33. Конвертация коллекций в Python.
  34. Метод init в Python
  35. Создание и операции с дробями
  36. Конкатенация строковых литералов
  37. Генерация случайных чисел Python
  38. Бинарный поиск
  39. Измерение времени выполнения
  40. Метод remove() для удаления элемента из списка
  41. Поиск самого частого элемента
  42. Работа с IP-адресами в Python
  43. Строковое представление объектов
  44. Переопределение метода __eq__
  45. Python Аргументы по умолчанию
  46. Копирование и вставка текста в Python
  47. Использование подчеркивания в REPL
  48. Установка виртуального окружения Python

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