И ещё один свежий релиз: вышел Python 3.14.3 с несколькими крупными фичами.
🔘 Free-threading (PEP 779)
Официальная поддержка потоков без GIL. Теперь можно собрать Python без глобальной блокировки интерпретатора и получить настоящую многопоточность. Для большинства это пока не актуально — требует пересборки и совместимых библиотек. Но направление задано.
🔘 T-strings (PEP 750)
Новый синтаксис
🔘 Отложенная оценка аннотаций (PEP 649)
Аннотации типов теперь вычисляются лениво. Можно писать def foo() -> Bar до определения класса Bar. Это упрощает работу с циклическими импортами и forward references.
Практический совет
Если у вас 3.14 на продакшене — обновляйтесь осторожно. А вот для экспериментов с free-threading — самое время попробовать.
@zen_of_python
Официальная поддержка потоков без GIL. Теперь можно собрать Python без глобальной блокировки интерпретатора и получить настоящую многопоточность. Для большинства это пока не актуально — требует пересборки и совместимых библиотек. Но направление задано.
Новый синтаксис
t"..." — как f-strings, но без автоматической интерполяции. Возвращает шаблон, который можно обработать отдельно. Полезно для безопасной работы со строками в SQL, HTML, логах.query = t"SELECT * FROM users WHERE id = {user_id}"
# query — не строка, а Template объектАннотации типов теперь вычисляются лениво. Можно писать def foo() -> Bar до определения класса Bar. Это упрощает работу с циклическими импортами и forward references.
Практический совет
Если у вас 3.14 на продакшене — обновляйтесь осторожно. А вот для экспериментов с free-threading — самое время попробовать.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6✍1
PEP 822 предлагает d-строки — новый способ работы с многострочным текстом в Python 3.15.
Проблема: при использовании тройных кавычек внутри функций приходится либо ломать отступы кода, либо получать лишние пробелы в строке. d-строки автоматически удаляют общий ведущий отступ.
Работает аналогично
Можно комбинировать с f-строками:
PEP пока в статусе Draft, целевая версия — Python 3.15.
@zen_of_python
Проблема: при использовании тройных кавычек внутри функций приходится либо ломать отступы кода, либо получать лишние пробелы в строке. d-строки автоматически удаляют общий ведущий отступ.
def example():
query = d"""
SELECT *
FROM users
WHERE active = true
"""
# query не содержит лишних пробелов слева
Работает аналогично
textwrap.dedent(), но на уровне синтаксиса — без вызова функции и накладных расходов в рантайме.Можно комбинировать с f-строками:
df"""...""" для шаблонов с подстановкой переменных.PEP пока в статусе Draft, целевая версия — Python 3.15.
@zen_of_python
👍22🔥3
Нашёл прекрасное: memory_graph — визуализация того, что реально происходит в памяти Python. Либа рисует граф объектов: переменные, ссылки, алиасы, копии. Сразу видно почему
Вот примеры: Hash Map, Binary Tree, Copying, Recursion.
Установка:
Для изучения питона — очень круто, рекомендую.
@zen_of_python
b += [1] и b = b + [1] — это разные вещи.Вот примеры: Hash Map, Binary Tree, Copying, Recursion.
Установка:
pip install --upgrade memory_graphДля изучения питона — очень круто, рекомендую.
@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
❤6❤🔥1
«У Python только один реальный конкурент» — и это не Rust, не Go, не Julia
Это Clojure. Автор (Ethan McCue) объясняет логику:
Для реальной конкуренции с Python в Data Science нужно два условия:
1️⃣ Иметь аналогичную экосистему
3️⃣ Превосходить Python в чём-то важном
Экосистема: У Clojure есть полные аналоги numpy (
Превосходство: Python медленный, и это не починить. CPython не может оптимизироваться, потому что детали его реализации стали частью API — сломаешь numpy/pandas. Отсюда вечное «есть быстрый способ и медленный способ» делать одно и то же.
Clojure работает на JVM, которая агрессивно оптимизирует рантайм. Можно писать логику на самом языке, а не убегать в C. Поясню тут логику автора: Python структурно не может стать быстрым — его внутренности (reference counting, GIL, C API) стали частью контракта с экосистемой. У JVM таких ограничений нет.
Станет ли Clojure массовым — вопрос удачи, но по набору характеристик это единственный язык, у которого есть шанс.
@zen_of_python
Это Clojure. Автор (Ethan McCue) объясняет логику:
Для реальной конкуренции с Python в Data Science нужно два условия:
Экосистема: У Clojure есть полные аналоги numpy (
dtype-next), pandas (tech.ml.dataset), ML-пайплайны (metamorph.ml), плоттинг (Tableplot), ноутбуки (Clay). А чего нет — можно вызвать Python напрямую через libpython-clj.Превосходство: Python медленный, и это не починить. CPython не может оптимизироваться, потому что детали его реализации стали частью API — сломаешь numpy/pandas. Отсюда вечное «есть быстрый способ и медленный способ» делать одно и то же.
Clojure работает на JVM, которая агрессивно оптимизирует рантайм. Можно писать логику на самом языке, а не убегать в C. Поясню тут логику автора: Python структурно не может стать быстрым — его внутренности (reference counting, GIL, C API) стали частью контракта с экосистемой. У JVM таких ограничений нет.
Станет ли Clojure массовым — вопрос удачи, но по набору характеристик это единственный язык, у которого есть шанс.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣19❤1🤔1🤓1💊1
Forwarded from Типичный программист
This media is not supported in your browser
VIEW IN TELEGRAM
Ну и еще немного про ИИ! 😁
Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали🤪 Но каким-то образом у разных компаний получается приручить эту химеру и выуживать из нее пользу.
Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.
Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.
Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно👻
Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали
Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.
Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.
Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4❤2
Документация для нейросетей — как получать нормальный код от LLM
Основная идея: вайбкодинг работает плохо не из-за моделей, а из-за отсутствия контекста. Если LLM не знает структуру проекта, стек и ограничения — она додумывает сама.
В статье разбирают, какие файлы документации стоит держать в проекте, чтобы нейросеть генерировала код в рамках существующей архитектуры, а не с нуля. Приводят готовые шаблоны.
@zen_of_python
Основная идея: вайбкодинг работает плохо не из-за моделей, а из-за отсутствия контекста. Если LLM не знает структуру проекта, стек и ограничения — она додумывает сама.
В статье разбирают, какие файлы документации стоит держать в проекте, чтобы нейросеть генерировала код в рамках существующей архитектуры, а не с нуля. Приводят готовые шаблоны.
@zen_of_python
Tproger
Секрет эффективного вайбкодинга — документация для нейросетей
Делаем документацию для ИИ-кода, в конце статьи будет 5 шаблонов, которые можно копировать и использовать для проектов.
👍2👎2
Пять платформ, где дети учат Python через игры — от простых песочниц до олимпиадных задач. Trinket, Tynker, CodeCombat, Minecraft, CheckiO — разобрано для кого что подходит по возрасту и уровню.
@zen_of_python
@zen_of_python
Tproger
Топ-5 платформ и игр, которые незаметно научат ребенка основам Python
Описали платформы: CheckiO, Minecraft, CodeCombat, Tinker, Trinket. Рассказали про сильные сторону и что учесть, если вы выбрали именно эту платформу.
👍5
Бенчмарк 8 Python-библиотек для извлечения текста из документов
Авторы Kreuzberg выложили обновлённое сравнение 8 open source инструментов для text extraction: Kreuzberg, Apache Tika, Docling, Unstructured, PDFPlumber, Pandoc, PyMuPDF4LLM, MarkItDown, Mineru. 56 типов файлов, p50/p95/p99 по скорости и памяти, quality score против ground truth.
Методика: бенчмарк-харнес на Rust, запускается в GitHub Actions CI. Замеряют extraction duration, throughput, memory, success rate. Качество измеряют через сравнение извлечённого текста с эталоном.
И что бы вы думали, кто победил? Конечно же сам Kreuzberg. Он покрывает больше всего форматов (49/56), success rate 99,1%. Docling и Unstructured надёжны, но в разы медленнее. Docling на сложных файлах может считать 60+ минут на файл.
Но бенчмарк открытый и воспроизводимый, так что в целом как будто Kreuzberg реально можно пробовать.
@zen_of_python
Авторы Kreuzberg выложили обновлённое сравнение 8 open source инструментов для text extraction: Kreuzberg, Apache Tika, Docling, Unstructured, PDFPlumber, Pandoc, PyMuPDF4LLM, MarkItDown, Mineru. 56 типов файлов, p50/p95/p99 по скорости и памяти, quality score против ground truth.
Методика: бенчмарк-харнес на Rust, запускается в GitHub Actions CI. Замеряют extraction duration, throughput, memory, success rate. Качество измеряют через сравнение извлечённого текста с эталоном.
И что бы вы думали, кто победил? Конечно же сам Kreuzberg. Он покрывает больше всего форматов (49/56), success rate 99,1%. Docling и Unstructured надёжны, но в разы медленнее. Docling на сложных файлах может считать 60+ минут на файл.
Но бенчмарк открытый и воспроизводимый, так что в целом как будто Kreuzberg реально можно пробовать.
@zen_of_python
👍3❤1
25 лет на ORM, теперь — raw queries + dataclasses. И вот почему
Майкл Кеннеди (автор Talk Python to Me) отказался от ORM/ODM в пользу паттерна Raw+DC: сырые запросы к базе + Python dataclasses на границе слоя доступа к данным.
🔘Главный аргумент: ИИ-ассистенты пишут нативные запросы в разы лучше, чем ORM-код. У PyMongo в 53 раза больше загрузок, чем у Beanie, и нативный синтаксис MongoDB одинаковый в Node, PHP, Go. Разница в обучающих данных огромна.
🔘Паттерн простой: raw query → dict → from_doc() → dataclass. Type safety, автокомплит в IDE, поддержка mypy — всё на месте. Без магии ORM, без зависимости от фреймворка.
🔘В комментах согласны с ИИ-аргументом, но напоминают: ORM — это не только запросы, но и миграции, валидация, защита от SQL-инъекций. Raw SQL повышает порог ответственности за безопасность.
📎 Тред на r/Python
А вы как обычно кодите?
@zen_of_python, теперь и в Max
Майкл Кеннеди (автор Talk Python to Me) отказался от ORM/ODM в пользу паттерна Raw+DC: сырые запросы к базе + Python dataclasses на границе слоя доступа к данным.
🔘Главный аргумент: ИИ-ассистенты пишут нативные запросы в разы лучше, чем ORM-код. У PyMongo в 53 раза больше загрузок, чем у Beanie, и нативный синтаксис MongoDB одинаковый в Node, PHP, Go. Разница в обучающих данных огромна.
🔘Паттерн простой: raw query → dict → from_doc() → dataclass. Type safety, автокомплит в IDE, поддержка mypy — всё на месте. Без магии ORM, без зависимости от фреймворка.
🔘В комментах согласны с ИИ-аргументом, но напоминают: ORM — это не только запросы, но и миграции, валидация, защита от SQL-инъекций. Raw SQL повышает порог ответственности за безопасность.
📎 Тред на r/Python
А вы как обычно кодите?
@zen_of_python, теперь и в Max
❤10🌚1
Вот ещё новость прошедшей недели: PyTorch перевёл тайпчекинг основного репозитория с MyPy на Pyrefly. Проверка всего проекта: MyPy — 50,6 сек, Pyrefly — 5,5 сек.
Вроде здорово, молодцы, но ведь есть ty. Ещё и пост в блоге написали, как будто одна известная большая корпорация повлияла.
А вы чем в 2026 тайп-чекаете?
(Да, как вы поняли, очень хочется пообщаться с вами, дайте каких-то комментариев, пожалуйста.)
Вроде здорово, молодцы, но ведь есть ty. Ещё и пост в блоге написали, как будто одна известная большая корпорация повлияла.
А вы чем в 2026 тайп-чекаете?
(Да, как вы поняли, очень хочется пообщаться с вами, дайте каких-то комментариев, пожалуйста.)
❤4
Анализ датасета QUT-DV25 (14 000 семплов малвари из PyPI) показал, что больше половины пакетов запускают reverse shell или крадут env-переменные прямо в
Проблема: sdist-пакеты требуют выполнения
Есть такой инструмент KEIP — eBPF-тул на LSM-хуках, который ставит сетевой whitelist на время
Вообще, в 2026
@zen_of_python
setup.py т.е. достаточно pip install, даже без импорта.
Проблема: sdist-пакеты требуют выполнения
setup.py при сборке. Это обычный Python-скрипт, он может делать что угодно — от сборки C-расширения до отправки ~/.ssh/id_rsa на C2-сервер.Есть такой инструмент KEIP — eBPF-тул на LSM-хуках, который ставит сетевой whitelist на время
pip install. Если setup.py или дочерний процесс лезет на сервер не из белого списка — весь процесс убиваетсяВообще, в 2026
setup.py — это красный флаг. Если пакет без pyproject.toml и без wheel, то может он и не нужен вам?@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
✍4❤3
Где лучшие тусовки? На тех-ивентах!
Последняя по очереди, но не по значимости — номинация «IT-ивент года». Здесь тоже собрались три компании, и если вы еще не добрались до чтения их кейсов, то давайте сделаем это вместе.
— Лаборатория Числитель собрала конференцию, на которой обсуждают строго только K8s.
— Мероприятие Selectel, которое стало уже традицией, делали полностью in-house.
— Специально для своего хакатона Островок создал платформу, чтобы участвовать могли разработчики из любой точки мира.
Выбирайте компанию-фаворита и вручайте ей золотую мышь — голосование доступно на сайте.
Telegram | Max
Последняя по очереди, но не по значимости — номинация «IT-ивент года». Здесь тоже собрались три компании, и если вы еще не добрались до чтения их кейсов, то давайте сделаем это вместе.
— Лаборатория Числитель собрала конференцию, на которой обсуждают строго только K8s.
— Мероприятие Selectel, которое стало уже традицией, делали полностью in-house.
— Специально для своего хакатона Островок создал платформу, чтобы участвовать могли разработчики из любой точки мира.
Выбирайте компанию-фаворита и вручайте ей золотую мышь — голосование доступно на сайте.
Telegram | Max
МФТИ запускает онлайн-школу «Предпринимательское планирование»
Преподаватели с кафедры Технологического предпринимательства, а окончание школы даёт поступление в магистратуру на эту кафедру без экзаменов.
В школе основы и работа мини-группах: разработка бизнес-модели, фокус на рынке, стратегия роста. А в магистратуре приоритет на запуске бизнеса, в том числе работа с реальными успешными предпринимателями.
@zen_of_python, также в Max
Преподаватели с кафедры Технологического предпринимательства, а окончание школы даёт поступление в магистратуру на эту кафедру без экзаменов.
В школе основы и работа мини-группах: разработка бизнес-модели, фокус на рынке, стратегия роста. А в магистратуре приоритет на запуске бизнеса, в том числе работа с реальными успешными предпринимателями.
@zen_of_python, также в Max
❤2🤣2👍1
Как вам формат TOON (Token-Oriented Object Notation) вместо JSON?
Массивы объектов объявляются один раз в заголовке
Для Python уже есть готовые библиотеки, например
С другой стороны это просто CSV с дополнением, вложенности не очень удобно делать. Что думаете?
@zen_of_python, также в Max
Массивы объектов объявляются один раз в заголовке
users[2]{id,name,role}:, а дальше идут только данные через запятую без лишних скобок и ключей. Это сокращает объём данных на 30–60%.Для Python уже есть готовые библиотеки, например
python-toon и toons. Для промтов в ИИ экономия токенов. Для людей на глаз вроде тоже проще читается. С другой стороны это просто CSV с дополнением, вложенности не очень удобно делать. Что думаете?
@zen_of_python, также в Max
👍9❤3👎3
Вышел Starlette 1.0.0rc1, первый релиз-кандидат после 8 лет разработки
Напомню, Starlette — легковесный ASGI-фреймворк для Python. Поддерживает WebSocket, HTTP/2, фоновые задачи, middleware и маршрутизацию. На нём построен FastAPI, Starlette отвечает за всю сетевую часть, а FastAPI добавляет сверху валидацию через Pydantic и автогенерацию OpenAPI-схемы.
Том Кристи создал Starlette в июне 2018, а сейчас Марсело Трилесинский (Kludex) выпустил первый RC версии 1.0. Почти 10 млн скачиваний в день, а с недавних пор ещё и зависимость Python MCP SDK.
Что в релизе. Удаление deprecated-фич, помеченных для удаления в 1.0.0, плюс финальные баг-фиксы. Никаких крупных новых API, акцент на стабильности.
Реакция сообщества. «Starlette работала настолько стабильно, что казалось, будто 1.0 уже давно вышла». Несколько человек отметили, что узнали о Starlette как о зависимости, только когда начали копаться в MCP-серверах.
Установка:
@zen_of_python, также в Max
Напомню, Starlette — легковесный ASGI-фреймворк для Python. Поддерживает WebSocket, HTTP/2, фоновые задачи, middleware и маршрутизацию. На нём построен FastAPI, Starlette отвечает за всю сетевую часть, а FastAPI добавляет сверху валидацию через Pydantic и автогенерацию OpenAPI-схемы.
Том Кристи создал Starlette в июне 2018, а сейчас Марсело Трилесинский (Kludex) выпустил первый RC версии 1.0. Почти 10 млн скачиваний в день, а с недавних пор ещё и зависимость Python MCP SDK.
Что в релизе. Удаление deprecated-фич, помеченных для удаления в 1.0.0, плюс финальные баг-фиксы. Никаких крупных новых API, акцент на стабильности.
Реакция сообщества. «Starlette работала настолько стабильно, что казалось, будто 1.0 уже давно вышла». Несколько человек отметили, что узнали о Starlette как о зависимости, только когда начали копаться в MCP-серверах.
Установка:
pip install starlette==1.0.0rc1@zen_of_python, также в Max
🔥8🎉5
PEP 747 принят. В
Раньше функции вроде
Теперь можно так:
В Python приедет с версии 3.15. Уже сейчас доступно через
@zen_of_python
Telegram | Max
typing добавится TypeForm[T] — способ аннотировать аргументы, которые принимают не значения, а сами типы: int | str, list[int], TypedDict и другие.Раньше функции вроде
trycast() или is_match() из библиотек beartype, pydantic, typeguard приходилось аннотировать через object, слишком широко, без проверки типов.Теперь можно так:
def trycast[T](typx: TypeForm[T], value: object) -> T | None: ...
def is_match[T](value: object, typx: TypeForm[T]) -> TypeGuard[T]: ...
# Или просто переменная:
int_form: TypeForm = int | None
В Python приедет с версии 3.15. Уже сейчас доступно через
typing_extensions. Экспериментальная поддержка есть в Pyright@zen_of_python
Telegram | Max
👍9❤1
Внезапное порно в Conda
История такая: один разработчик хотел посмотреть YouTube, открыл меню «Пуск» в винде, начал вбивать You и увидел подсказу YouPorn. Очень удивился, потому что он не смотрит порно (конечно, а как вы подумали).
Начал расследование. Оказалось, что файл с таким именем лежит в
Protego — Python-библиотека для парсинга файлов robots.txt. В её тестовых данных есть пример файла robots.txt с сайта YouPorn т.е. обычный тест на реальных данных из интернета. Никакого вредоносного кода, никакой атаки на supply chain, просто Windows Search проиндексировал содержимое тестовых файлов внутри пакетов Conda.
Это хороший повод напомнить: Windows Search индексирует всё подряд, включая содержимое директорий с пакетами. При разработке на винде лучше добавить такие диры в исключения. Или не разрабатывать на винде.
@zen_of_python
История такая: один разработчик хотел посмотреть YouTube, открыл меню «Пуск» в винде, начал вбивать You и увидел подсказу YouPorn. Очень удивился, потому что он не смотрит порно (конечно, а как вы подумали).
Начал расследование. Оказалось, что файл с таким именем лежит в
Anaconda3\pkgs\protego\info\test\tests\test_data
Protego — Python-библиотека для парсинга файлов robots.txt. В её тестовых данных есть пример файла robots.txt с сайта YouPorn т.е. обычный тест на реальных данных из интернета. Никакого вредоносного кода, никакой атаки на supply chain, просто Windows Search проиндексировал содержимое тестовых файлов внутри пакетов Conda.
Это хороший повод напомнить: Windows Search индексирует всё подряд, включая содержимое директорий с пакетами. При разработке на винде лучше добавить такие диры в исключения. Или не разрабатывать на винде.
@zen_of_python
🌚12😁7✍2❤2