Последняя номерная тестовая версия Python получит поддержку сопоставления с шаблонами, увеличение производительности и улучшение синтаксиса контекстных менеджеров.
Match/case и сопоставление с шаблонами
Одно из самых ожидаемых нововведений в Python – появление конструкции «match/case», позволяющей сравнивать выражение с несколькими блоками условий.
Синтаксис новой версии предлагает более мощную функциональность по сравнению с классическим «switch/case». Для объявления выражения необходимо использовать ключевое слово match, после которого последовательно указать шаблоны через операторы case. Также доступна маска _ – она работает аналогично default в конструкциях со switch и отвечает за выполнение кода в том случае, если ни один case не совпал. Возможно применять оператор «или», который позволяет указать несколько литералов.
Сопоставление с шаблонами не ограничивается базовым синтаксисом и предоставляет дополнительные возможности, такие как сравнение сложных шаблонов. К примеру, можно после match указать любой итерируемый тип: кортежи, списки, классы и т.д. Функционал способен провести сопоставление атрибутов объекта класса с шаблонами, написанными в стиле конструктора.
Прочие нововведения
Контекстные менеджеры, которые часто используют для работы с файлами и базами данных, стали еще удобнее в Python 3.10. Нововведение разрешает указать в скобках несколько менеджеров, а в другом блоке with ссылаться на переменные, объявленные в предыдущем.
Добавлена новая функция для подсчета количества битов в двоичном представлении целого числа под названием Population Count (popcount). Вызвать ее можно при помощи int.bit_count().
Доработан синтаксис для операторов объединения типов – он стал короче и понятней. Изменение затрагивает и аннотации типов, и функции isinstance() и issubclass(). Проверка типов в Python 3.10 в целом будет более удобной.
Для увеличения производительности языка программирования оптимизированы конструкторы str(), bytes() и bytearray() – они стали примерно на 30% быстрее. Улучшен расчет параметров функций и их аннотаций – теперь этот процесс происходит во время компиляции, а не исполнения.
Устаревший контент
Обновление Python не только добавляет новые возможности, но и избавляется от ненужных. В версии 3.10 устаревшим будет объявлен пакет distutils – его планируется окончательно удалить в версии 3.12. В качестве замены разработчики рекомендуют перейти на пакеты setuptools и packaging.