es
Feedback
Python/ django

Python/ django

Ir al canal en Telegram

📈 Análisis del canal de Telegram Python/ django

El canal Python/ django (@pythonl) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 60 091 suscriptores, ocupando la posición 2 192 en la categoría Tecnologías y Aplicaciones y el puesto 10 214 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 60 091 suscriptores.

Según los últimos datos del 05 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -562, y en las últimas 24 horas de -8, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.76%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 3.58% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 4 065 visualizaciones. En el primer día suele acumular 2 153 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 15.
  • Intereses temáticos: El contenido se centra en temas clave como github, claude, контекст, архитектура, api.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
по всем вопросам @haarrp @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3Fmxm...

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 06 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

60 091
Suscriptores
-824 horas
-1237 días
-56230 días
Archivo de publicaciones
📦 Гайд: “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