Python
February 13

Последние обновления в Python: что нового в версиях 3.11 и 3.12

Python продолжает развиваться, предлагая разработчикам новые возможности и улучшения производительности. В этой статье мы рассмотрим ключевые изменения в последних версиях Python 3.11 и 3.12, а также разберём, как они могут повлиять на ваш код.

Что нового в Python 3.11?

1. Увеличение скорости выполнения кода

Python 3.11 стал значительно быстрее своих предшественников. В среднем разработчики сообщают о повышении производительности на 25%, а в некоторых случаях – до 60%. Это стало возможным благодаря:

  • Оптимизации байткода;
  • Улучшенной работе интерпретатора;
  • Более эффективному кэшированию.

2. Улучшенные сообщения об ошибках

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

3. Поддержка групп исключений

Добавлены новые механизмы обработки исключений. Теперь можно обрабатывать несколько исключений одновременно с помощью ExceptionGroup и except*. Этот механизм особенно полезен при работе с асинхронными задачами и обработкой множества ошибок сразу.

4. Улучшенные аннотации типов

Python 3.11 расширил поддержку статической типизации, добавив новые инструменты:

  • Self – удобный способ аннотировать методы, возвращающие экземпляр своего класса;
  • TypeVarTuple – поддержка вариативных дженериков;
  • LiteralString – аннотация для строковых литералов;
  • @dataclass_transform – упрощённая работа с метаклассами в dataclass.

Эти изменения делают код более понятным и предсказуемым.

Что нового в Python 3.12?

1. Расширенные f-строки

Одно из самых долгожданных обновлений! Теперь f-строки поддерживают многострочные выражения, комментарии и сложные конструкции, делая работу с форматированием строк ещё удобнее.

Пример нового синтаксиса:

name = "Python"
version = 3.12
print(f"Текущая версия: {name.upper()} {version}")

2. Улучшенные подсказки об ошибках

Интерпретатор стал умнее и теперь подсказывает возможные ошибки. Например, если вы забыли импортировать модуль, интерпретатор Python сам предложит, какой именно импорт вам нужен.

3. Оптимизация производительности

Разработчики продолжили улучшать скорость работы Python. Среди ключевых изменений:

  • Новый механизм мониторинга исполнения;
  • Оптимизированная работа GIL (Global Interpreter Lock);
  • Улучшенная работа с многопоточностью.

Эти изменения особенно полезны для высоконагруженных систем.

4. Удаление устаревших модулей

В Python 3.12 полностью удалён модуль distutils, который ранее использовался для установки пакетов. Теперь рекомендуется использовать setuptools и pip.

Что нового в Python 3.13?

1. Новый интерактивный интерпретатор

Python 3.13 представил улучшенный интерактивный интерпретатор с поддержкой многострочного редактирования и цветовой подсветкой синтаксиса. Это делает работу в интерактивном режиме более удобной и эффективной.

2. Экспериментальная поддержка многопоточности без GIL

Введена экспериментальная возможность запуска Python без глобальной блокировки интерпретатора (GIL), что позволяет полноценную параллельную работу потоков. Для использования этой функции необходимо запустить специальную версию интерпретатора (python3.13t или python3.13t.exe).

3. Экспериментальный JIT-компилятор

Добавлен базовый Just-In-Time (JIT) компилятор, который пока отключен по умолчанию. Ожидается, что в будущих версиях его производительность будет улучшена.

4. Улучшенные сообщения об ошибках

Сообщения об ошибках теперь имеют цветовую подсветку, что облегчает их восприятие и ускоряет процесс отладки.

5. Определенные семантики для locals()

Функция locals() теперь имеет четко определенные семантики при изменении возвращаемого словаря, что повышает предсказуемость поведения кода.

6. Удаление устаревших модулей

В соответствии с PEP 594 из стандартной библиотеки удалены устаревшие модули, что способствует поддержанию актуальности и легковесности стандартной библиотеки.

Итог

Python 3.11, 3.12 и 3.13 предлагают разработчикам множество улучшений, включая увеличение скорости работы, улучшенные сообщения об ошибках, новые возможности статической типизации и экспериментальные функции, такие как JIT-компилятор и многопоточность без GIL. Эти обновления делают язык ещё более удобным и мощным инструментом для программирования.

Что дальше?

Если вы ещё не обновились до последней версии Python, самое время это сделать! Проверьте свой код на совместимость и воспользуйтесь новыми возможностями для оптимизации и улучшения производительности.