Курс 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. Использование defaultdict в Python
  2. Создание спинбокса в tkinter
  3. Перевод эмодзи и эмотиконов.
  4. Преобразование в float
  5. Dict Comprehension в Python
  6. Работа с argparse
  7. Секреты Python
  8. Множественные конструкторы в Python
  9. Создание функций с произвольным количеством аргументов
  10. Использование двоеточия в Python
  11. Возвращение нескольких значений через кортеж или класс
  12. Python: цикл for и оператор присваивания
  13. Слияние словарей в Python 3.9
  14. Открытие, чтение и закрытие файла
  15. Метод rsub в Python: расширение функциональности вычитания
  16. Создание новой даты в Python
  17. Проверка типа данных
  18. Генерация случайных чисел Python
  19. Список импортированных модулей в Python
  20. Очистка строки в Python
  21. Нахождение разницы между списками в Python
  22. Чтение и запись TOML-конфигов
  23. Эффективная конкатенация строк в Python
  24. Отрицательные индексы списков в Python
  25. Оператор del в Python
  26. Модуль itertools: комбинации и перестановки
  27. Преобразование range в итератор
  28. Ввод нескольких значений
  29. Извлечение данных из JSON
  30. Модуль xkcd: загрузка комиксов
  31. Обработка исключений в Python 3
  32. Непрерывная проверка в Python
  33. Подписка на Kaspersky Team
  34. Порядок операций в Python
  35. Фильтрация списков с itertools
  36. Работа с байтовыми строками в Python
  37. Распаковка значений в Python
  38. Многострочные строки в Python
  39. Пустой оператор pass в Python
  40. Руководство по Pymorphy2
  41. Проблема сравнения словарей
  42. Применение функции к списку
  43. Копирование файлов с shutil()
  44. Python: изменяемые и неизменяемые коллекции
  45. Именованные срезы в Python
  46. Разделение списка на гнппы

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