Python 3.14 вышел с поддержкой T-строк

Python 3.14 вышел с поддержкой T-строк


Python 3.14 официально вышел и приносит смесь изменений в сам язык, внутренние механизмы интерпретатора и стандартную библиотеку. Это крупные обновления, такие как шаблонные строковые литералы, отложенная оценка аннотаций и даже официальная поддержка субинтерпретаторов в стандартной библиотеке.

Python получает шаблонные строковые литералы, или t-строки. Они используют знакомый синтаксис f-строк (просто замените ‘f’ на ‘t’, например: t’Mister {name}’), но вместо того чтобы сразу объединять статический текст и ваши интерполированные значения в один объект str, они возвращают объект Template. По сути, это разделяет статические и переменные части строки во время выполнения. Этот новый объект чрезвычайно полезен для очистки пользовательского ввода, например, чтобы убедиться, что строка безопасна для использования в HTML или при запросах к базе данных.

variety = 'Stilton' template = t'Try some {variety} cheese!' type(template)      

То, как аннотации типов (например, : str, которые вы добавляете к аргументу функции) обрабатываются, полностью изменилось с введением отложенной оценки. Теперь аннотации больше не оцениваются сразу. Это означает, что больше не нужно заключать аннотации в строки, чтобы избежать NameError при ссылках вперед.

Что мне кажется наиболее интересным, так это то, что интерпретатор становится ещё более полезным благодаря улучшенным сообщениям об ошибках. Если вы сделаете распространённую опечатку в ключевом слове, например напишете «whille» вместо while, интерпретатор теперь предложит правильное ключевое слово. Вы также получите конкретные сообщения об ошибках для запутанного синтаксиса, например, если блок elif следует за блоком else. Эти небольшие изменения окажутся настоящим спасением при отладке.

Одна из главных тем в Python 3.14 — это стремление к скорости и лучшей работе с современными многопоточными системами. Для тех, кто выполняет ресурсоёмкую работу, требующую высокой загрузки процессора, свободно-поточная сборка Python, которая была экспериментальной в 3.13, теперь официально поддерживается. Это означает, что штраф за производительность для однопоточного кода в свободно-поточном режиме теперь составляет всего около пяти-десяти процентов, что является значительным улучшением. Цель заключается в том, чтобы полноценно использовать многозадачные процессоры, позволяя масштабировать ваши приложения без ограничений Глобальной блокировки интерпретатора (GIL).

Функция, которая ранее была доступна только через C-API, теперь доступна в стандартной библиотеке через новый модуль concurrent.interpreters. Представьте это как получение изоляции процессов с эффективностью потоков. Она позволяет использовать новые, удобные для человека модели параллелизма, такие как акторная модель, что является большим преимуществом для упрощения разработки и сопровождения параллельного программного обеспечения. Пока есть некоторые небольшие ограничения при массовом внедрении этой функции, такие как более медленный запуск новых интерпретаторов, поэтому не стоит ожидать от нее идеальной работы на данный момент.

Новый пакет сжатия уже здесь, и он включает выделенный модуль для формата Zstandard, compression.zstd. Zstandard известен как широко используемый, высокоэффективный и быстрый формат сжатия. Он использует аналогичный API существующим модулям lzma и bz2, поэтому его интеграция должна быть очень простой.

Отладка асинхронного кода может быть настоящей головной болью, поэтому в Python 3.14 добавлены новые инструменты командной строки для интроспекции asyncio. Теперь вы можете просматривать работающие процессы с помощью команды python -m asyncio ps PID, чтобы получить плоский список задач, или использовать pstree для визуального отображения дерева асинхронных вызовов. Это очень полезно для того, чтобы понять, где заблокирована ваша программа и как связаны ваши корутины.

Вы можете скачать Python с его официального сайта или с GitHub

Источник: Python

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *