en
Feedback
Python/ django

Python/ django

Open in Telegram

📈 Analytical overview of Telegram channel Python/ django

Channel Python/ django (@pythonl) in the Russian language segment is an active participant. Currently, the community unites 60 075 subscribers, ranking 2 192 in the Technologies & Applications category and 10 214 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 60 075 subscribers.

According to the latest data from 05 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -562 over the last 30 days and by -8 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 6.76%. Within the first 24 hours after publication, content typically collects 3.58% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 4 065 views. Within the first day, a publication typically gains 2 153 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 15.
  • Thematic interests: Content is focused on key topics such as github, claude, контекст, архитектура, api.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
по всем вопросам @haarrp @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3Fmxm...

Thanks to the high frequency of updates (latest data received on 07 June, 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.

60 075
Subscribers
-824 hours
-1237 days
-56230 days
Posts Archive
📦 Гайд: “The Step-by-Step Guide to Python Packaging Tools 2025” Python-инфраструктура сильно изменилась. Выбор между pip, po
📦 Гайд: “The Step-by-Step Guide to Python Packaging Tools 2025” Python-инфраструктура сильно изменилась. Выбор между pip, poetry, uv, hatch, pdm и др. — это уже не просто "pip install", а стратегическое решение. В этом гайде сравниваются 6 ключевых инструментов, каждый со своими сильными и слабыми сторонами: 1️⃣ uv — самый быстрый и универсальный (написан на Rust) ✅ До 100× быстрее pip ✅ Объединяет pip, virtualenv и pip-tools ✅ Поддержка PyPI-паблишинга и Python-менеджмента 📌 Выбор для CI/CD и monorepo-проектов 2️⃣ Poetry 2 — стандарт для библиотек и модульных приложений ✅ Поддержка semantic versioning, lock-файлов, плагинов ✅ Отлично подходит для open source 📌 Идеален для reproducible builds и PyPI 3️⃣ Hatch — “Cargo для Python” ✅ Поддержка матриц окружений, monorepo, хуков ✅ Интеграция с uv для скорости 📌 Выбор для сложных enterprise-проектов и тестовых фреймворков 4️⃣ PDM — стандартизированный менеджер без virtualenv ✅ Поддержка PEP 582 (__pypackages__), PEP 621 ✅ Изоляция без виртуалок, удобен для прототипов 📌 Подходит для rapid dev и экспериментальных сборок 5️⃣ Pipenv — простой интерфейс для приложений ✅ Pipfile, auto-venv, чистый CLI 📌 Хорош для небольших проектов и начинающих 6️⃣ pip — классика ✅ Совместим везде, гибкий ❌ Нет lock-файлов, окружений, требует внешних тулов 📌 Решение для легаси-проектов или скриптов 💡 Выводы:uv — лучший выбор для скорости, CI и автоматизации • Poetry — стандарт для библиотек, особенно с open source • Hatch — для сложных проектов и продвинутых пайплайнов • PDM — для быстрой разработки и современных стандартов • Pipenv — простой, но морально устарел • pip — базовый минимум, но требует ручной сборки обвязки Если ты: 🔹 Собираешь ML‑пайплайн → смотри в сторону uv + Hatch 🔹 Работаешь над библиотекой → Poetry 2 будет логичным выбором 🔹 Строишь монорепу или сложный фреймворк → Hatch + workspace 🔹 Пишешь простые скрипты или MVP → подойдёт PDM или Pipenv 🔗 Полный гайд @pythonl

🐍 Продвинутый трюк в Python: свой `with` без классов Хочешь выполнять код до и после блока with, но не писать громоздкий класс с __enter__ и __exit__? Используй @contextmanager из contextlib:

from contextlib import contextmanager
import time

@contextmanager
def timer(label="Block"):
    start = time.time()
    print(f"[{label}] Start")
    try:
        yield
    finally:
        end = time.time()
        print(f"[{label}] End — elapsed: {end - start:.3f}s")

# Пример использования
with timer("Download step"):
    time.sleep(1.2)
📌 До yield — код до with 📌 После yield — код после with 🔥 Это мощный способ: - логировать действия, - временно менять окружение (stdout, переменные, режимы), - управлять ресурсами, не создавая классы. @pythonl

🐍 Python Gotcha: как правильно логировать необработанные исключения В этой статье разбирают частую проблему: программа падае
+4
🐍 Python Gotcha: как правильно логировать необработанные исключения В этой статье разбирают частую проблему: программа падает, но в логах — тишина. Необработанные исключения отправляются в stderr, а не в лог-файл, и вы не знаете, что пошло не так. Пример кода:

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.FileHandler("app.log")
handler.setFormatter(logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s"))
logger.addHandler(handler)

def divide(a, b):
    return a / b

def main():
    logger.info("Start")
    logger.info(divide(10, 0))  # ZeroDivisionError
    logger.info("End")

if __name__ == "__main__":
    main()
📄 В логе:


2025-07-24 12:00:00 __main__ INFO Start
❗ А сам ZeroDivisionError — только в консоли. Лог молчит. ✅ Решение — использовать sys.excepthook:

import sys

def handle_uncaught_exception(exc_type, exc_value, exc_traceback):
    logger.critical("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))

sys.excepthook = handle_uncaught_exception
Теперь, если произойдёт ошибка, она попадёт в лог:
CRITICAL Uncaught exception
Traceback (most recent call last):
  ...
ZeroDivisionError: division by zero
📌 Вывод: — Необработанные исключения не попадут в лог, если явно не подключить sys.excepthook — Это особенно важно в продакшене: лог покажет, где и почему всё сломалось — Просто и надёжно 🔗 Подробнее @pythonl

🐍 Python Gotcha: как правильно логировать необработанные исключения В этой статье разбирают частую проблему: программа падае
+4
🐍 Python Gotcha: как правильно логировать необработанные исключения В этой статье разбирают частую проблему: программа падает, но в логах — тишина. Необработанные исключения отправляются в stderr, а не в лог-файл, и вы не знаете, что пошло не так. Пример кода:

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.FileHandler("app.log")
handler.setFormatter(logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s"))
logger.addHandler(handler)

def divide(a, b):
    return a / b

def main():
    logger.info("Start")
    logger.info(divide(10, 0))  # ZeroDivisionError
    logger.info("End")

if __name__ == "__main__":
    main()
📄 В логе:


2025-07-24 12:00:00 __main__ INFO Start
❗ А сам ZeroDivisionError — только в консоли. Лог молчит. ✅ Решение — использовать sys.excepthook:

import sys

def handle_uncaught_exception(exc_type, exc_value, exc_traceback):
    logger.critical("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))

sys.excepthook = handle_uncaught_exception
Теперь, если произойдёт ошибка, она попадёт в лог:
CRITICAL Uncaught exception
Traceback (most recent call last):
  ...
ZeroDivisionError: division by zero
📌 Вывод: — Необработанные исключения не попадут в лог, если явно не подключить sys.excepthook — Это особенно важно в продакшене: лог покажет, где и почему всё сломалось — Просто и надёжно 🔗 Подробнее @pythonl

Хотите обрабатывать тексты в несколько кликов? Освойте регулярные выражения в новом бесплатном курсе Академии Selectel. Вы на
Хотите обрабатывать тексты в несколько кликов?   Освойте регулярные выражения в новом бесплатном курсе Академии Selectel.   Вы научитесь: 🔹 моментально извлекать данные из гигабайтов текста, 🔹 валидировать формы любой сложности, 🔹 работать с кириллицей без сломанных \b, 🔹 решать задачи с помощью lookarounds и именованных групп.   Курс будет полезен как новичкам, так и опытным специалистам, которые хотят прокачаться в работе со скриптами и редакторами.   Начните обучение прямо сейчас Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqxE8kx8

🐧 Pynguin — генератор юнит-тестов для Python. Инструмент автоматически создаёт тесты для Python-кода, экономя время разработ
🐧 Pynguin — генератор юнит-тестов для Python. Инструмент автоматически создаёт тесты для Python-кода, экономя время разработчиков и при этом адаптирован под особенности динамической типизации Python. Проект пока находится в стадии исследования и требует осторожности — он исполняет тестируемый код, поэтому разработчики рекомендуют использовать изолированные среды вроде Docker. Установка через pip install pynguin, минимальная конфигурация требует указания пути к проекту и модулям для тестирования. 🤖 GitHub @pythonl

🖥 Полезный трюк в Python: как отсортировать список по нескольким условиям одновременно Если вы хотите отсортировать список объектов (например, словарей или кортежей) сразу по нескольким критериям — например, сначала по возрасту по возрастанию, а затем по имени по убыванию — не нужно писать громоздкие функции. Используйте sorted() с key, комбинируя несколько полей с нужной логикой сортировки. Вот как:

people = [
    {"name": "Alice", "age": 30},
    {"name": "Bob", "age": 25},
    {"name": "Charlie", "age": 25},
    {"name": "David", "age": 30},
]

# Сортировка: сначала по age (по возрастанию), затем по name (по убыванию)
sorted_people = sorted(people, key=lambda p: (p["age"], -ord(p["name"][0])))

for person in sorted_people:
    print(person)
💡 Работает и с объектами, и с кортежами — главное, правильно составить key. Особенно полезно для фильтрации списков в табличных данных, при выводе результатов или генерации отчётов. #python Больше коротких уроков тут

Как прокачаться до Python Middle+/Senior разработчика и получить новую работу в 2025? Ребята из Interview Hustlers в четверг
Как прокачаться до Python Middle+/Senior разработчика и получить новую работу в 2025? Ребята из Interview Hustlers в четверг проводят воркшоп о том, как junior и middle-разработчикам быстрее вырасти до уровня крепкого Senior, овладеть hard skills, востребованными в продуктовых компаниях и BigTech, и получить новую работу на сложном рынке в 2025 году, где AI уже наступает на пятки. 🗓 24 июля 19:00 по МСК Программа: ▪️ Какие hard skills качать, чтобы устроиться на Middle+/Senior разработчика в BigTech? ▪️ Как эффективно собеседоваться на тяжелом рынке летом 2025? Как выбивать максимальные офферы в РФ и заграницей? ▪️ Как вырасти технически на текущем месте работы и получить повышение в компании? Спикеры: ▪️Максим Аверин — Senior Python Dev, основатель школы Interview Hustlers, 8 лет опыта ▪️Сергей Соловьев — Python Tech Lead в Кипрском финтехе, 10+ лет опыта Регистрируйся на бесплатный воркшоп по ссылке. 📎 После регистрации на воркшоп ты получишь 2 бонуса: «Как разобрать неудачное собеседование без фидбека за 3 шага с AI?» и видео-урок «System Design интервью: Как спроектировать highload-маркетплейс с 0?»

🧮 CVXPY — библиотека для решения задач выпуклой оптимизации, позволяющая формулировать математические модели в естественной
🧮 CVXPY — библиотека для решения задач выпуклой оптимизации, позволяющая формулировать математические модели в естественной форме, а не подстраиваться под ограниченный синтаксис солверов. С её помощью можно работать с задачами линейного и квадратичного программирования, геометрическими и квазивыпуклыми оптимизациями, не углубляясь в технические детали реализации алгоритмов. Проект развивается как open-source-сообщество с 2013 года и поддерживает популярные солверы. Он также имеет удобный API: например, ограничения записываются почти как математические неравенства, а решение возвращает не только результат, но и значения двойственных переменных. 🤖 GitHub @pythonl

🔍Тестовое собеседование на Python-бекендера с разработчиком из Avito в четверг 24 июля(уже в четверг!) в 19:00 по мск приход
🔍Тестовое собеседование на Python-бекендера с разработчиком из Avito в четверг 24 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Даня, разработчик из Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Дане Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. О рекламодателе

🖥 Динамическое создание классов через type Это может пригодиться для метапрограммирования, генерации моделей, DSL, автотестов и многого другого.

# Создаем класс динамически
MyDynamicClass = type(
    'MyDynamicClass',              # имя класса
    (object,),                     # родительские классы
    {'x': 42, 'hello': lambda self: f'Hello, x = {self.x}'}  # атрибуты и методы
)

obj = MyDynamicClass()
print(obj.hello())  # Hello, x = 42
🔥 Что тут происходит? type() в обычном использовании возвращает тип объекта. Но если передать три аргумента, он создаёт новый класс. Мы задали имя, базовые классы и словарь атрибутов. 💡 Это то, что делает Python "Pythonic" — классы это тоже объекты, и ты можешь создавать их на лету. @pythonl

🐍 dlt — библиотека для загрузки данных на Python. Этот open-source инструмент упрощает работу с данными — от простых скрипто
🐍 dlt — библиотека для загрузки данных на Python. Этот open-source инструмент упрощает работу с данными — от простых скриптов до сложных ETL-пайплайнов. Автоматически определяет структуру данных и адаптируется под разные источники и хранилища. Проект удобен для быстрого прототипирования: можно начать в Colab-ноутбуке, а затем масштабировать до production-решения. Поддерживает инкрементальную загрузку и интеграцию с Airflow. 🤖 GitHub @pythonl

Repost from Machinelearning
🐼 Pandas тормозит на больших данных? NVIDIA показала, как ускорить его в 40 раз — без переписывания кода. Команда NVIDIA провела эксперимент с 18 миллионами строк данных с фондовых рынков: они выполнили типичный анализ данных с помощью pandas на CPU, а затем тоже самое — на GPU, используя cudf.pandas. Для примеры были взяты: 📉 Скользящие средние (50D и 200D) 📅 Недельная статистика закрытия рынков 🧊 В общей сложности ~18M строк Результат впечатляет : удалось добиться**ускорения обработки данных в 20–40 раз Код скрипта не менялся вообще — тот же pandas, но на GPU. Это один из примеров, где ускорение достигается без переписывания логики кода. 🟡 Потестить самому можно в Colab 🟡 Другие примеры с кодом — здесь @ai_machinelearning_big_data #datasckience #ml #nvidia #gpu #pandas #python

🖥 Что выведет код ниже? def append_to_list(val, my_list=[]): my_list.append(val) return my_list print(append_to_list(1)) pri
🖥 Что выведет код ниже?

def append_to_list(val, my_list=[]):
    my_list.append(val)
    return my_list

print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))
🤯 Подвох Многие думают, что каждый вызов append_to_list() создаёт новый список, и ожидают вывод:

[1]
[2]
[3]
Но на самом деле Python выведет:

[1]
[1, 2]
[1, 2, 3]
🧠 Почему так происходит? В Python значения аргументов по умолчанию вычисляются один раз — при определении функции, а не при каждом вызове. Значение my_list=[] создаётся один раз и сохраняется между вызовами. Это работает как статическая переменная внутри функции. ✅ Как это исправить? Используй None как значение по умолчанию:

def append_to_list(val, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(val)
    return my_list

print(append_to_list(1))  # [1]
print(append_to_list(2))  # [2]
print(append_to_list(3))  # [3]
💡 Вывод Не используйте изменяемые объекты (например, list, dict, set) как значения по умолчанию для аргументов функций в Python. @pythonl

👩‍💻 MegaParse — высокопроизводительный парсер, который способен преобразовывать всевозможные типы документов (Word документ
👩‍💻 MegaParse — высокопроизводительный парсер, который способен преобразовывать всевозможные типы документов (Word документы, PDF-файлы или даже презентации PowerPoint)! 🌟 Его основная цель — преобразовывать информацию из документов в текст для LLM, при этом минимизируя различные потери данных. 🔐 Лицензия: Apache-2.0 🖥 Github @pythonl

📘 Потерянная глава Automate the Boring Stuff Автор культовой книги выложил бесплатно новую главу книги, которая не попала в
+3
📘 Потерянная глава Automate the Boring Stuff Автор культовой книги выложил бесплатно новую главу книги, которая не попала в издание — про автоматизацию работы с аудио и видео. 🎧 Что внутри: — Конвертация и обрезка видео с помощью moviepy — Преобразование аудио в текст через SpeechRecognition — Извлечение субтитров — Автоматизация задач с файлами .mp3, .wav, .mp4 и .avi 🛠 Глава написана в привычном стиле — просто, на примерах, с пояснениями к коду. Идеально подойдёт для тех, кто хочет быстро научиться обрабатывать медиафайлы на Python без сложных фреймворков. 📎 Читать @Pythonl

💡 STUMPY — библиотека для анализа временных рядов. Этот проект предлагает мощный инструмент для работы с временными последов
💡 STUMPY — библиотека для анализа временных рядов. Этот проект предлагает мощный инструмент для работы с временными последовательностями через вычисление matrix profile — специальной метрики, которая автоматически находит схожие паттерны в данных. Инструмент поддерживает распределённые вычисления через Dask и GPU-ускорение через Numba. Технология особенно полезна для обнаружения аномалий, повторяющихся фрагментов и семантической сегментации. Библиотека одинаково хорошо работает как на небольших наборах данных, так и на временных рядах длиной в миллионы точек. 🤖 GitHub @pythonl

Как сказать рутине STOP? Ускорьте рабочие процессы и освободите время для более интересных дел — с помощью курса Слёрма «Pyth
Как сказать рутине STOP? Ускорьте рабочие процессы и освободите время для более интересных дел — с помощью курса Слёрма «Python для инженеров» 👈 Это обучение, заточенное на инженеров в нём нет ничего лишнего, только то, что необходимо именно вам. На курсе вы научитесь: 🔹 писать эффективный и поддерживаемый код; 🔹 писать Kubernetes-операторы и модули для Ansible; 🔹 создавать, использовать и тестировать свои API; 🔹 взаимодействовать с инструментами CI/CD, CVS и DevOps системами. Есть бесплатный демодоступ. Старт 11 августа. Занять своё место на курсе — по ссылке.

🌀 Cirq — Python-фреймворк для работы с квантовыми схемами, разработанный командой Google Quantum AI. Этот проект предоставля
🌀 Cirq — Python-фреймворк для работы с квантовыми схемами, разработанный командой Google Quantum AI. Этот проект предоставляет инструменты для создания параметризованных квантовых цепей, их трансформации и симуляции на различных бэкендах. Инструмент имеет встроенную поддержку аппаратно-зависимых операций и интеграция с высокопроизводительными симуляторами вроде qsim. Позволяет описывать квантовые алгоритмы с учетом шумовых характеристик реальных процессоров. 🤖 GitHub @pythonl

🐍 Хитрый совет по Python: как ускорить in в 1000 раз Когда ты проверяешь, есть ли элемент в списке, Python делает это медленно — он пробегает по списку полностью. А если ты проверяешь элемент в множестве (set), это работает в сотни раз быстрее. 📌 Пример:

data = [1, 2, 3, ..., 1000000]  # большой список
queries = [42, 9999, 123456]

# Медленно:
for q in queries:
    if q in data:
        print(q)
🔁 Каждый q in data проходит весь список → медленно. ✅ Правильный способ: Преобразуй список в set один раз — и все станет быстро:

data_set = set(data)

for q in queries:
    if q in data_set:
        print(q)
💡 Проверка in в set работает мгновенно (как в словаре). Такой трюк особенно полезен, если: -у тебя много данных -ты делаешь много проверок на вхождение 📌 Запомни: if x in список: — медленно Лучше: if x in set(список): — быстро! @pythonl