Курс 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 enumerate() использование
  2. Beautiful Soup — извлечение данных из HTML
  3. Работа с модулем random
  4. Основы Python
  5. Асинхронное программирование с asyncio
  6. Создание инструмента обнаружения плагиата
  7. Работа с изображениями PIL
  8. Управление асинхронными задачами с помощью Semaphore
  9. Генераторы в Python
  10. Многопоточность и асинхронное программирование в Python
  11. Генераторы списков
  12. Множественное назначение в Python
  13. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  14. Регулярные выражения в Python
  15. Проверка ввода с помощью isdigit
  16. Проверка списка: any() и all()
  17. Измерение времени выполнения кода
  18. Сравнение неупорядоченных списков
  19. Переопределение метода
  20. Python UserString — создание подклассов строк
  21. Каналы Senior: Python, Java, Frontend, SQL, C++
  22. Итерации в Python
  23. Форматирование строк в Python
  24. Проверка условий: all и any
  25. Функции-генераторы в Python
  26. Метод join() для объединения элементов
  27. Функции в одну строку
  28. Отправка поздравлений по дню рождения
  29. Работа с zip-архивами в Python
  30. Работа с getopt
  31. Встраивание HTML в Jupyter Notebook
  32. kwargs в Python
  33. Декораторы в Python
  34. Печать комбинаций в Python с Itertools
  35. Ограничение ресурсов в Python
  36. Удаление файлов и папок в Python
  37. Установка виртуального окружения Python
  38. Переопределение оператора % для объектов
  39. Работа с географическими данными.
  40. Принципы Zen Python
  41. Ключевое слово global в Python
  42. Частичное совпадение ввода
  43. Удаление дубликатов из списка с помощью dict.fromkeys
  44. Роль object и type в Python
  45. Оболочка Python

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