TGViewer
Библиотека Python разработчика | Книги по питону Библиотека Python разработчика | Книги по питону @bookpython · 18.1K subscribers
Post #3846 2.26K
Что такое хуки? Как они используются в Python?

Хуки (hooks) в программировании — это специальные точки в коде, в которые можно «вклиниться», чтобы изменить или расширить поведение программы без модификации её исходного кода. Хуки позволяют добавлять дополнительную логику или выполнять нужные действия, когда происходят определенные события.


⚫️Как хуки используются в Python?

В Python хуки часто реализуются в библиотеках и фреймворках для того, чтобы пользователи могли добавлять свои функции, выполняющиеся при определённых событиях. Они применяются в тестировании, веб-разработке, обработке данных и многих других областях. Вот несколько примеров использования хуков в Python:

1. Тестовые фреймворки (например, pytest):
В тестовом фреймворке pytest есть хуки для настройки и завершения тестов. Вы можете создать функции, которые будут выполняться до начала тестов (pytest_runtest_setup) или после их завершения (pytest_runtest_teardown). Это удобно для создания и очистки тестовой среды.


# Пример hook-функции в pytest
def pytest_runtest_setup(item):
print(f"Setting up for test: {item.name}")


2. Веб-фреймворки (например, Django):
В Django хуки используются для расширения поведения, например, перед или после сохранения объекта. Так, у моделей Django есть хуки pre_save и post_save, которые позволяют выполнять код до и после сохранения объекта в базе данных.


from django.db.models.signals import pre_save
from django.dispatch import receiver
from .models import MyModel

@receiver(pre_save, sender=MyModel)
def my_hook(sender, instance, **kwargs):
print("This runs before saving MyModel instance.")


3. Flask (перед/после обработки запроса):
Flask имеет хуки before_request и after_request, которые позволяют выполнить код до обработки HTTP-запроса или после отправки ответа.


from flask import Flask

app = Flask(__name__)

@app.before_request
def before_request_func():
print("This runs before each request")

@app.after_request
def after_request_func(response):
print("This runs after each request")
return response


4. Логирование и обработка ошибок:
Встроенный модуль logging в Python поддерживает хуки для настраиваемой обработки логов, например, через методы addFilter или создание своих обработчиков (handlers), чтобы настроить кастомное поведение логирования.

Хуки гибкие и удобные, поскольку они позволяют разработчику интегрировать собственную логику в существующий код, не изменяя его.

Мы в MAX

👉@BookPython
  • 👍 2
More from @bookpython
  1. Sep 28, 2026Python поддерживает цепочные присваивания со следующим синтаксисом: a = b = c = 42 Выгляди…
  2. Sep 27, 2026Чтобы объект можно было использовать в качестве ключа словаря, он должен быть хешируемым.…
  3. Sep 25, 2026Как быстро очистить список в Python? Сегодня я покажу вам несколько способов очистки списк…
  4. Sep 24, 2026🚀 5 крутых Python-фишек, о которых знают не все Python — мощный и удобный язык, но даже о…
  5. Sep 23, 2026🔥 Как ускорить Python-код в 10 раз? Сегодня покажу вам мощный инструмент для оптимизации…
  6. Sep 21, 202610 полезных библиотек для Python-разработчика Сегодня я подготовил для вас подборку из 10…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →