Курс 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. Сравнение def и lambda-функций
  2. Итерация по копии коллекции
  3. Утечки переменных цикла в Python 3.x
  4. Проблемы с именами переменных
  5. Counter() — подсчет элементов
  6. Частичное применение функций в Python
  7. Python 3.12: Псевдонимы типов
  8. Анонимные функции в Python
  9. Оптимизация гиперпараметров с Scikit Optimize
  10. Работа с аргументами командной строки в Python
  11. Обратный список чисел
  12. Функция zip() в Python
  13. Динамические маршруты во Flask
  14. Модуль inspect
  15. Получение размера объекта с sys.getsizeof()
  16. Генераторы в Python
  17. Работа с срезами в Python
  18. Генератор бросков кубиков
  19. Преобразование строки в число
  20. Создание детектора плагиата
  21. Ускорение выполнения кода в Python
  22. Преобразование данных в Python
  23. Управление импортом в Python
  24. Профилирование кода на Python
  25. Возврат нескольких значений из функции
  26. Аннотации типов в Python
  27. Метод enumerate() в Python
  28. Отладка регулярных выражений в Python
  29. Просмотр атрибутов и методов класса
  30. Переопределение метода divmod
  31. Создание namedtuple списком полей
  32. Метод __index__ в Python
  33. Операции с датами в Python
  34. Метод join для наборов
  35. Функция product() из itertools
  36. Работа с файлами в Python
  37. Основные функции и модули Python
  38. Декораторы в Python
  39. Обход элементов в Python
  40. Генераторы по генератору
  41. Преобразование числа в восьмеричную строку
  42. Избегание циклических зависимостей классов в Python
  43. Принципы программирования
  44. Построение графиков в терминале с bashplotlib
  45. Оператор += для объединения строк
  46. Список импортированных модулей в Python
  47. Логирование с Logzero
  48. OrderedDict — упорядоченный словарь
  49. Константы в модуле cmath
  50. PrettyTable: создание таблицы

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