10 Июл 2023
2 мин
5410

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

Содержание

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

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

Создание декоратора в 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 и выводит результат на экран.

Заключение

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

Содержание

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

Определи профессию по рисунку
Пройдите тест, узнайте какой профессии подходитеНачать тест
+