Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Show more📈 Analytical overview of Telegram channel Python | Вопросы собесов
Channel Python | Вопросы собесов (@python_easy_ru) in the Russian language segment is an active participant. Currently, the community unites 12 650 subscribers, ranking 9 797 in the Technologies & Applications category and 50 916 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 12 650 subscribers.
According to the latest data from 11 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -90 over the last 30 days and by 0 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 6.14%. Within the first 24 hours after publication, content typically collects 4.15% reactions from the total number of subscribers.
- Post reach: On average, each post receives 777 views. Within the first day, a publication typically gains 526 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 2.
- Thematic interests: Content is focused on key topics such as ставь, модуль, строка, docker, alice.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Thanks to the high frequency of updates (latest data received on 12 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
import datetime
# Меняем поведение метода now()
def fake_now():
return datetime.datetime(2000, 1, 1)
datetime.datetime.now = fake_now # Monkey Patch
print(datetime.datetime.now()) # Выведет 2000-01-01 00:00:00
🚩Может вызвать неожиданные ошибки после обновления библиотек
Если библиотека обновится, и её внутренняя логика изменится, Monkey Patch может перестать работать или, что ещё хуже, привести к багам.
Ты сделал Monkey Patch метода json.dumps, а потом библиотека json обновилась и поменяла его сигнатуру. Теперь твой патч сломается или будет работать некорректно.
🚩Трудно отлаживать и поддерживать
Monkey Patching меняет поведение кода в скрытом режиме, поэтому сложно понять, почему что-то работает не так. Если баг возник из-за патча, отладка может занять часы или даже дни.
Ты исправил баг с str.split(), заменив его через Monkey Patch, но через 6 месяцев разработчик обновил код, забыл про патч, и всё сломалось.
🚩Может затронуть весь код проекта (глобальное изменение)
Monkey Patching меняет поведение для всей программы, а не только в одном модуле или файле. Это делает код хрупким и непредсказуемым.
Если ты изменишь метод dict.get(), он будет вести себя по-другому во всех модулях программы. Это может привести к критическим ошибкам.
original_get = dict.get
def patched_get(self, key, default=None):
print(f"Запрашивается ключ: {key}")
return original_get(self, key, default)
dict.get = patched_get # Monkey Patch
d = {"a": 10}
print(d.get("a")) # Работает, но теперь с побочным эффектом
🚩Нет гарантии, что это сработает во всех окружениях
Monkey Patch может работать на одной версии Python или библиотеки, но сломаться на другой. В продакшене, где есть разные серверы и окружения, это может вызвать непредсказуемые ошибки.
Ставь 👍 и забирай 📚 Базу знанийsqlparse и asgiref как вспомогательные библиотеки для работы с SQL и асинхронностью. Разберём их назначение подробно.
🟠`sqlparse` – разбор SQL-запросов
sqlparse (SQL Parser) — это библиотека для анализа, форматирования и обработки SQL-запросов. В Django она используется в админке, логах и отладке ORM.
🚩Где используется в Django?
Форматирование SQL-запросов в django.db.connection.queries
from django.db import connection
from sqlparse import format
queries = connection.queries # Получаем список SQL-запросов
for q in queries:
print(format(q["sql"], reindent=True, keyword_case="upper")) # Красивый SQL
Логирование SQL-запросов
sqlparse помогает Django красиво выводить SQL-запросы в DEBUG=True.
Команда sqlmigrate
python manage.py sqlmigrate app_name 0001
🟠`asgiref` – асинхронность в Django
asgiref (Asynchronous Server Gateway Interface Reference) — это библиотека, которая помогает Django работать в асинхронном (async) режиме. Django поддерживает ASGI с версии 3.0, и asgiref — это её обязательная зависимость.
🚩Где используется в Django?
🟠Поддержка ASGI
Django с версии 3.0 поддерживает асинхронные вьюхи, WebSockets и асинхронные базы данных (например, с asyncpg).
В settings.py есть параметр:
ASGI_APPLICATION = "myproject.asgi.application"
🟠Асинхронные middleware
Django 4.x поддерживает асинхронные middleware через asgiref.sync и asgiref.local.
🟠Преобразование `async` → `sync` и наоборот
Django использует sync_to_async() и async_to_sync() из asgiref:
from asgiref.sync import sync_to_async
def sync_function():
return "Hello from sync!"
async_function = sync_to_async(sync_function)
print(async_function()) # Вызывает синхронную функцию в асинхронном коде
🟠Локальное хранилище для асинхронных задач (`asgiref.local.Local`)
Позволяет хранить данные отдельно для каждого потока или запроса.
Ставь 👍 и забирай 📚 Базу знанийБаза данных (company_db) ├── Схема: public (по умолчанию) │ ├── Таблица: employees │ ├── Таблица: departments ├── Схема: hr │ ├── Таблица: employees │ ├── Таблица: salaries ├── Схема: sales │ ├── Таблица: customers │ ├── Таблица: orders🚩Как создавать и использовать схемы? Создание схемы (
CREATE SCHEMA)
CREATE SCHEMA hr; -- Создаём схему "hr"
Создание таблицы внутри схемы
CREATE TABLE hr.employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
position VARCHAR(50)
);
Выбор схемы по умолчанию
SET search_path TO hr;
🚩Где полезны схемы?
🟠Разделение данных по модулям
Если в БД хранятся разные области бизнеса (кадры, продажи, финансы), их можно разделить по схемам:
- hr.employees, hr.salaries
- sales.orders, sales.customers
🟠Разные версии одной БД
Например, в PostgreSQL можно создать схему dev для тестов:
- dev.users — тестовая версия таблицы
- prod.users — продакшен-версия
🟠Безопасность и доступ пользователей
Можно дать доступ к разным схемам разным пользователям:
GRANT USAGE ON SCHEMA hr TO hr_manager;
GRANT SELECT ON ALL TABLES IN SCHEMA hr TO hr_manager;
Ставь 👍 и забирай 📚 Базу знанийGET /index.html HTTP/1.1
🟠Заголовки (headers) Дополнительная информация о запросе.
Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html
🟠Тело запроса (body) Используется в некоторых методах (например, POST), чтобы передать данные на сервер.
name=John&age=30
🚩
Структура HTTP-ответа 🟠Стартовая строка Указывает версию протокола, код состояния и текстовое описание.
HTTP/1.1 200 OK
🟠Заголовки (headers) Дополнительные данные, например, тип содержимого.
Content-Type: text/html Content-Length: 348
🟠Тело ответа (body) Содержит данные, которые сервер отправляет клиенту (например, HTML-страница).
<html>
<body>Hello, world!</body>
</html>
🚩Основные HTTP-методы
🟠GET
Запрашивает данные с сервера. Данные передаются в URL.
🟠POST
Отправляет данные на сервер (например, формы).
🟠PUT
Обновляет данные на сервере или создаёт, если они отсутствуют.
🟠DELETE
Удаляет данные на сервере.
🟠HEAD
Аналог GET, но возвращает только заголовки без тела ответа.
🟠OPTIONS
Возвращает информацию о поддерживаемых методах для ресурса.
🟠PATCH
Частичное обновление ресурса.
Ставь 👍 и забирай 📚 Базу знанийBaseView — это базовый класс представления (view) в Django, который предоставляет основу для создания представлений без жёсткой привязки к HTTP-методам (GET, POST и др.). Он является родительским классом для всех классов-представлений (CBV, Class-Based Views) в Django.
🚩Зачем нужен `BaseView`?
Обеспечивает общую структуру для классов-представлений.
Разделяет логику обработки запроса и рендеринг.
Позволяет переопределять логику обработки запросов через dispatch().
Является родительским классом для View, TemplateView, ListView и других CBV.
🚩Как работает `BaseView`?
Этот класс сам по себе не обрабатывает запросы. Он лишь задаёт каркас для представлений.
from django.views import View
class BaseView:
def dispatch(self, request, *args, **kwargs):
"""Определяет, какой метод (GET, POST и т. д.) вызывать"""
handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
return handler(request, *args, **kwargs)
def http_method_not_allowed(self, request, *args, **kwargs):
"""Обработчик для неподдерживаемых HTTP-методов"""
return HttpResponseNotAllowed(self._allowed_methods())
🚩Использование `BaseView`
Обычно мы используем View, который наследуется от BaseView.
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
return HttpResponse("Это GET-запрос")
def post(self, request):
return HttpResponse("Это POST-запрос")
Ставь 👍 и забирай 📚 Базу знаний