en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

Zen of Python

Zen of Python

Open in Telegram

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Show more

📈 Analytical overview of Telegram channel Zen of Python

Channel Zen of Python (@zen_of_python) in the Russian language segment is an active participant. Currently, the community unites 18 732 subscribers, ranking 6 967 in the Technologies & Applications category and 35 153 in the Russia region.

📊 Audience metrics and dynamics

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

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

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 6.16%. Within the first 24 hours after publication, content typically collects 4.21% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 154 views. Within the first day, a publication typically gains 788 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 1.
  • Thematic interests: Content is focused on key topics such as github, rust, pip, api, install.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
“Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL”

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

18 732
Subscribers
-1224 hours
-317 days
-8330 days
Posts Archive
Готовый сокет ещё не содержит всё сообщение Selector сообщил, что сокет доступен для чтения. Это означает, что можно попробов
Готовый сокет ещё не содержит всё сообщение Selector сообщил, что сокет доступен для чтения. Это означает, что можно попробовать прочитать данные, а не что весь запрос уже пришёл. В разборе модуля selectors показывают небольшой цикл обработки соединений. Сокеты переводят в неблокирующий режим, а данные накапливают в буфере конкретного соединения. У TCP нет границ сообщений: один recv может вернуть часть запроса или несколько сообщений вместе. Нужен свой способ выделения сообщения — длина, разделитель или формат протокола. Запись тоже бывает частичной. Неотправленный остаток сохраняют, а ожидание записи включают только при наличии данных. Иначе постоянно готовый к записи сокет может заставить цикл расходовать CPU впустую. DefaultSelector выбирает доступный механизм платформы, но правила протокола и очистка соединений остаются задачей приложения. #python #сети

Ленивый импорт откладывает не только загрузку модуля В Python 3.15 импорт можно отложить до первого обращения к имени. Это по
Ленивый импорт откладывает не только загрузку модуля В Python 3.15 импорт можно отложить до первого обращения к имени. Это полезно для консольной утилиты, которая ради --help загружает тяжёлые зависимости.
# Python 3.15+
lazy import json

def parse(text):
    return json.loads(text)
Но выполнение модуля тоже переносится. Если импорт регистрировал плагин, а к имени никто не обратился, регистрация не произойдёт. Ошибка загрузки также может возникнуть позже привычного места импорта. В руководстве по ленивым импортам предлагают сначала измерить их стоимость через -X importtime, затем отложить только нужные зависимости. Новый синтаксис не разбирается старыми версиями Python. Для совместимого кода есть __lazy_modules__: старые интерпретаторы игнорируют этот список и выполняют обычный импорт. #python #производительность

Одинаковые файлы, разные ZIP: почему меняется хеш Два архива распаковываются в одинаковые файлы, но их SHA-256 различаются. П
Одинаковые файлы, разные ZIP: почему меняется хеш Два архива распаковываются в одинаковые файлы, но их SHA-256 различаются. Причиной могут быть даты записей, их порядок, права или настройки сжатия. В разборе воспроизводимых архивов используют поддержку SOURCE_DATE_EPOCH в Python 3.14. При записи через writestr() с именем файла переменная позволяет задать стабильную дату вместо текущей. Дату лучше брать из неизменяемого события сборки, например коммита. Отдельно нужно сортировать имена, фиксировать содержимое и параметры сжатия. Явно переданный ZipInfo требует своей политики метаданных. Проверка должна сравнивать байты двух сборок, а не только распакованные файлы. Для строгой воспроизводимости закрепите и версии инструментов: одинаковые исходники не гарантируют одинаковое сжатие в любой среде. #python #сборка

Что проверить при обновлении до Pydantic 2.14 Библиотека добавила поддержку Python 3.15 и прекратила поддержку 3.9. Поэтому о
Что проверить при обновлении до Pydantic 2.14 Библиотека добавила поддержку Python 3.15 и прекратила поддержку 3.9. Поэтому обновление стоит начать с версий интерпретатора в CI и рабочих окружениях. В анонсе Pydantic 2.14 есть улучшение для функций, принимающих выражения типов. TypeAdapter теперь использует TypeForm, благодаря чему совместимый анализатор может вывести результат TypeAdapter(int | str) как int | str, а не неизвестный тип. Это улучшает статическую проверку, но не заменяет выполнение валидации. Само указание аннотации ещё не проверяет внешние данные. Для TypeForm нужны достаточно свежие анализаторы: авторы указывают Pyright 1.1.412 или Mypy 2.2 и новее. Перед обновлением проверьте также свои валидаторы, сериализацию и генерацию схем: в выпуск вошли небольшие изменения поведения. #python #pydantic

Почему тесты находят пакет, который забыли положить в сборку При структуре, где пакет лежит в корне репозитория, Python может
Почему тесты находят пакет, который забыли положить в сборку При структуре, где пакет лежит в корне репозитория, Python может импортировать его прямо из рабочей директории. Тесты проходят, хотя установленный пакет может оказаться неполным. В разборе структуры проекта предлагают для библиотек рассмотреть каталог src/:
project/
├── pyproject.toml
├── src/
│   └── mypkg/
│       └── __init__.py
└── tests/
Теперь пакет обычно нужно установить, прежде чем импортировать. Это помогает заметить зависимость от файлов, случайно доступных в корне проекта. Но установка для разработки и установка собранного wheel — разные проверки. Чтобы найти пропущенный шаблон или файл данных, соберите wheel и запустите тесты с ним в чистом окружении вне репозитория. #python #тестирование

Что делать с данными? 💬 Строить отчёты. А ещё, например: ✅находить закономерности в больших массивах; ⬜️предсказывать поведе
Что делать с данными? 💬 Строить отчёты. А ещё, например:
✅находить закономерности в больших массивах; ⬜️предсказывать поведение пользователей; ⬜️строить рекомендательные системы; ⬜️обучать и улучшать ML-модели; ⬜️создавать продукты и помогать бизнесу расти.
В Школе аналитиков данных МТС учатся решать такие задачи на практике. В программе — SQL и Python, математика и статистика, анализ данных, машинное обучение и большие данные, а также нейросети и рекомендательные системы. Занятия ведут действующие эксперты Центра BigData MWS. Теория чередуется с практикой, а преподаватели дают обратную связь по работам и помогают отслеживать прогресс. Это будет интересно:
➡️студентам последних курсов и выпускникам технических вузов ➡️алитикам данных, которые хотят погружаться в исследования ➡️ИТ-специалистам, которые хотят перейти в новое для себя направление
Обучение продлится 10 месяцев и будет полностью бесплатным. Заявки принимаем до 25 октября. Отправить заявку ↗️

UTF-8 по умолчанию не перекодирует старые файлы В Python 3.15 текстовый ввод-вывод по умолчанию использует UTF-8. Это убирает
UTF-8 по умолчанию не перекодирует старые файлы В Python 3.15 текстовый ввод-вывод по умолчанию использует UTF-8. Это убирает часть различий между платформами, но файл в CP1251 остаётся файлом в CP1251. В руководстве по переходу предлагают сначала найти операции с неявной кодировкой:
python -X warn_default_encoding app.py
Предупреждения покажут выполненные вызовы, где кодировка не указана. Для остальных путей пригодится статическая проверка. Указывайте encoding="utf-8" для UTF-8 и encoding="cp1251" для известных старых файлов. Если нужна именно кодировка локали пользователя, используйте encoding="locale". Не добавляйте errors="ignore" ради исчезновения ошибки: так можно незаметно потерять символы. Перед обновлением проверьте реальные входные файлы, включая выгрузки из старых систем. #python #файлы

Как сделать бэкап работающей SQLite через Python Просто скопировать файл активной базы рискованно. Во время копирования стран
Как сделать бэкап работающей SQLite через Python Просто скопировать файл активной базы рискованно. Во время копирования страницы могут изменяться, а при WAL часть данных находится в отдельном журнале. Python предоставляет доступ к SQLite Online Backup API через Connection.backup(). Метод вызывают у источника и передают ему соединение с приёмником:
import sqlite3
from contextlib import closing

with closing(sqlite3.connect("app.db")) as src:
    with closing(sqlite3.connect("backup.db")) as dst:
        src.backup(dst)
SQLite согласует копирование с работой базы. Получившаяся копия самостоятельна: следующие записи в исходник в неё не попадут. Здесь closing нужен для закрытия соединений: обычный with connection управляет транзакцией, но не закрывает соединение. После бэкапа проверьте восстановление и чтение данных. #python #sqlite

Python обработал 7,6 ГБ JSON за 0,12 секунды Здесь интересно, куда уходило время. Дэниел Лемир, исследователь производительно
Python обработал 7,6 ГБ JSON за 0,12 секунды Здесь интересно, куда уходило время. Дэниел Лемир, исследователь производительности, взял 2,2 млн событий GitHub, чтобы посчитать открытые PR по языкам. А Python при обычном разборе создавал кучу словарей, списков и строк, которые для этой задачи вообще не нужны. В эксперименте с fastsimdjson и lazy=True Python-объекты создаются только для запрошенных полей. Сборка Python без GIL позволяет обрабатывать события в 64 потоках внутри одного процесса. У каждого потока свои счётчики, в конце их складывают. Зачем собирать весь объект, если нужна только малая часть? У Лемира получилось около 0,12 секунды. Стенд: два Xeon Gold 6548N, 64 ядра, free-threaded Python 3.14.6 и fastsimdjson 0.6.0. Все 7,6 ГБ уже распакованы в RAM, чтение с диска и распаковка в замер не входят. Это лучший из семи прогонов, одинаковую статистику сверили всеми методами.

Что проверить перед переходом на SQLAlchemy 2.1 Обновление зависимости может поменять драйвер подключения, даже если строка п
Что проверить перед переходом на SQLAlchemy 2.1 Обновление зависимости может поменять драйвер подключения, даже если строка подключения осталась прежней. В SQLAlchemy 2.1 адрес postgresql:// по умолчанию выбирает psycopg, а oracle:// — oracledb. Если проект рассчитывает на конкретный DBAPI, укажите его явно и проверьте совместимость. Есть ещё два изменения: минимальная версия Python — 3.11, а greenlet больше не устанавливается автоматически. Для асинхронных возможностей используйте:
pip install "sqlalchemy[asyncio]"
Перед обновлением прогоните сценарии подключения, транзакций и загрузки связей. Проверьте окружение CI: старая установленная зависимость может скрыть то, что сломается при чистой установке. #python #sqlalchemy

Почему subprocess с PIPE может зависнуть Дочерний процесс пишет в stdout, родитель вызывает wait(). На небольшом выводе всё р
Почему subprocess с PIPE может зависнуть Дочерний процесс пишет в stdout, родитель вызывает wait(). На небольшом выводе всё работает. На большом буфер канала заполняется: ребёнок ждёт чтения, родитель — завершения ребёнка. В разборе взаимной блокировки показано, почему каналы нужно читать во время работы процесса. Для ограниченного вывода удобен run():
import subprocess

result = subprocess.run(
    ["python", "--version"],
    capture_output=True,
    text=True,
    timeout=10,
    check=True,
)
Он использует communicate(), который обслуживает оба потока. Вывод при этом собирается в памяти, поэтому для больших логов выбирайте файл или потоковое чтение. У Popen.communicate(timeout=...) другая тонкость: истечение тайм-аута само не убивает процесс. Нужны завершение процесса и повторный communicate() для чтения остатка вывода. #python #процессы

Как запустить тесты самого Django через uv Хотите исправить баг в Django? Сначала понадобится окружение для тестов фреймворка
Как запустить тесты самого Django через uv Хотите исправить баг в Django? Сначала понадобится окружение для тестов фреймворка. Установки Django из PyPI для этого недостаточно: нужны исходники и тестовые зависимости. Адам Джонсон показывает настройку через uv. После клонирования репозитория выполните из его корня:
uv venv
uv pip install -e . -r tests/requirements/py3.txt
uv run python tests/runtests.py
Editable-установка позволяет тестам использовать ваш изменённый код. Для запуска можно указать конкретные тестовые модули вместо всего набора. Одна из возможных проблем — сборка pylibmc, которой нужны компилятор и заголовки libmemcached. Без этой зависимости остальные тесты можно запускать, но проверки, которым она нужна, будут пропущены. Учитывайте это, если правка затрагивает кеширование. #python #django

Почему тест проходит отдельно и падает в наборе Один тест добавляет объект в общий список, другой рассчитывает, что список пу
Почему тест проходит отдельно и падает в наборе Один тест добавляет объект в общий список, другой рассчитывает, что список пуст. При привычном порядке запуска ошибка может долго оставаться незаметной. В разборе плагинов pytest есть инструмент для таких случаев: pytest-randomly перемешивает порядок тестов и печатает seed. С ним можно повторить проблемный запуск:
pytest --randomly-seed=12345
Плагин также управляет состоянием генераторов случайных чисел, поэтому сбой стоит проверить и на зависимость от случайных данных. Ищите изменяемые атрибуты класса, глобальные кеши и фикстуры, которые оставляют состояние после себя. Исправление — изолировать данные и добавить очистку. Один успешный запуск в случайном порядке ещё не доказывает независимость тестов. #python #тестирование

Почему Rust внутри CPython предлагают начать с zlib На Python Language Summit обсудили постепенное внедрение Rust в CPython.
Почему Rust внутри CPython предлагают начать с zlib На Python Language Summit обсудили постепенное внедрение Rust в CPython. Первый кандидат — модуль zlib: небольшой участок с заметным применением, в том числе при работе с пакетами. Предлагается использовать zlib-rs, а существующую реализацию сохранить как fallback. В обсуждаемом плане Rust-бэкенд мог бы стать опциональным в Python 3.16. Это предложение, а не уже принятая возможность релиза. Перед расширением проекта нужно проверить поддержку платформ, влияние на производительность, сборку и сопровождение зависимостей. Rust помогает исключить некоторые ошибки работы с памятью, но корректность алгоритмов по-прежнему требует тестирования. Поэтому в плане есть fuzzing и property-based tests. #python #cpython

Почему mmap не всегда избавляет от копирования mmap позволяет обращаться к содержимому файла по смещениям. Это удобно для бин
Почему mmap не всегда избавляет от копирования mmap позволяет обращаться к содержимому файла по смещениям. Это удобно для бинарных форматов и повторного поиска, но срез mapped[start:end] всё равно создаёт новый объект bytes. Чтобы работать с данными через заимствованное представление, используйте memoryview. Тогда нужно следить за временем жизни: пока представления существуют, закрытие mapping может вызвать BufferError. Освободите их до выхода из контекстного менеджера. Отображение не означает, что весь файл сразу загружен в RAM, и не делает его неизменяемым снимком. Другой процесс всё ещё может менять исходный файл. Для одного последовательного прохода обычное буферизованное чтение часто проще. Выбирайте mmap под характер доступа и измеряйте результат. #python #память

Вебинар в прямом эфире уже идёт десять минут. Вы только открыли трансляцию. Что для вас важнее всего?
Anonymous voting

Когда Path.info экономит обращения к файловой системе При обходе большого каталога проверки is_file() и is_dir() могут создав
Когда Path.info экономит обращения к файловой системе При обходе большого каталога проверки is_file() и is_dir() могут создавать множество запросов метаданных. В Python 3.14 появился кеш типов файлов Path.info. У объектов, полученных через Path.iterdir(), он может уже содержать информацию из сканирования каталога. Несколько проверок типа используют эти данные повторно. Цена — актуальность. Если другой процесс заменил файл после обхода, path.info может описывать прежнее состояние. Для свежей проверки используйте прямые методы Path.is_file() и Path.is_dir(). Кеш нельзя очистить на месте; новый Path(path) начинает с пустым кешем. Но даже свежая проверка не устраняет гонку между проверкой и открытием файла — ошибки операции всё равно нужно обрабатывать. #python #файлы

👁👁 Тестовый собес на Python с разработчиком из Яндекса [+ ответы на 50 сложных вопросов в подарок] 14 октября в 19:00 (МСК)
👁👁 Тестовый собес на Python с разработчиком из Яндекса [+ ответы на 50 сложных вопросов в подарок] 14 октября в 19:00 (МСК) приходи посмотреть открытое онлайн-собеседование на Python-разработчика. Интервьюер: Хачатур Саркисян – разработчик из Яндекса, работает с высоконагруженными сервисами, Kafka и микросервисной архитектурой. На эфире нет сценария ↓ Кандидат – случайный разработчик, который не знает вопросов заранее. На обычном собесе ты не знаешь, что думает интервьюер, пока не придёт фидбек. На этом эфире Хачатур проговорит всё вслух:
— какие вопросы и задачи он даёт кандидатам в бигтехе; — что в каждом ответе засчитал бы, а что нет – и почему.
А в конце ответит на твои вопросы. Эфир проходит в рамках менторской программы от ШОРТКАТ для разработчиков, которые хотят повысить грейд, ЗП и прокачать скиллы! Участие бесплатное 🔥 🎁 За регистрацию дарим файл с ответами на 50 сложных вопросов с Python-собеседований. Зарегаться на эфир и забрать подарок можно в боте → @shortcut_py_bot Реклама. О рекламодателе.

Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsi
Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsidian. Его связка устроена так: Папка хранит исходные материалы и решения ↓ Индекс указывает, где искать данные для задачи ↓ Claude Code планирует работу ↓ Codex выполняет задачи по его вызову В описании этого рабочего процесса Бушар объясняет, зачем даёт агенту сведения для конкретной задачи. Начать предлагает с общей папки, короткого индекса и одного повторно используемого скилла. #ии #инструменты

Приходится ли вам копипастить данные и какие именно, когда переходите из одной нейросети в другую?
Anonymous voting