Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
10 Июл 2023
3 мин
8185

Что такое декораторы в Python

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

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Как создать декоратор

Создание декоратора в Python происходит в несколько этапов. Рассмотрим пример создания простого декоратора, который выводит информацию о вызове функции:

  1. Определите функцию-декоратор, которая принимает в качестве аргумента другую функцию:
def my_decorator(func):
   ...
  1. Внутри функции-декоратора определите новую функцию (обычно называемую «wrapper» или «обертка»), которая будет выполнять дополнительные действия перед и/или после вызова исходной функции:
def my_decorator(func):
    def wrapper():
        print("Что-то происходит перед вызовом функции")
        func()
        print("Что-то происходит после вызова функции")
    return wrapper
  1. Верните из функции-декоратора новую функцию-обертку:
def my_decorator(func):
    def wrapper():
        ...
    return wrapper
  1. Теперь можно применить созданный декоратор к любой функции с помощью синтаксиса @decorator:
@my_decorator
def say_hello():
    print("Привет, мир!")

say_hello()

В результате выполнения кода мы увидим следующий вывод:

Что-то происходит перед вызовом функции
Привет, мир!
Что-то происходит после вызова функции

Пример использования декоратора

Рассмотрим пример использования декоратора для измерения времени выполнения функции:

import time

def timing_decorator(func):
    def wrapper():
        start_time = time.time()
        func()
        end_time = time.time()
        print(f"Функция {func.__name__} выполнялась {end_time - start_time:.2f} секунд")
    return wrapper

@timing_decorator
def some_long_running_function():
    time.sleep(2)
    print("Функция завершила работу")

some_long_running_function()

В данном примере декоратор timing_decorator измеряет время выполнения функции some_long_running_function и выводит результат на экран.

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Заключение

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

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий