Декораторы в Python — это мощный инструмент, который позволяет модифицировать поведение функций или классов без изменения их кода. Они представляют собой функции высшего порядка, то есть функции, которые принимают другие функции в качестве аргументов и возвращают новые функции. В Python декораторы обычно применяются с помощью синтаксиса @decorator перед определением функции или класса.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Как создать декоратор
Создание декоратора в Python происходит в несколько этапов. Рассмотрим пример создания простого декоратора, который выводит информацию о вызове функции:
- Определите функцию-декоратор, которая принимает в качестве аргумента другую функцию:
def my_decorator(func): ...
- Внутри функции-декоратора определите новую функцию (обычно называемую «wrapper» или «обертка»), которая будет выполнять дополнительные действия перед и/или после вызова исходной функции:
def my_decorator(func):
def wrapper():
print("Что-то происходит перед вызовом функции")
func()
print("Что-то происходит после вызова функции")
return wrapper
- Верните из функции-декоратора новую функцию-обертку:
def my_decorator(func):
def wrapper():
...
return wrapper
- Теперь можно применить созданный декоратор к любой функции с помощью синтаксиса
@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 — это удобный способ добавления нового поведения к функциям или классам без изменения их кода. Они используются для решения множества задач, таких как логирование, кеширование, проверка прав доступа и других. Важно понимать основы работы с декораторами, чтобы эффективно использовать их в своих проектах. Освоив принципы работы с декораторами, вы сможете значительно улучшить структуру своего кода и упростить его поддержку. 😊
Перейти в телеграм, чтобы получить результаты теста





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