Команда Python for Devs подготовила перевод обзора новых возможностей REPL в Python 3.14. Теперь автодополнение и подсветка синтаксиса работают прямо в терминале, а цветовую тему можно настроить под себя.


Python 3.14 приносит улучшения в интерактивную оболочку (REPL), делая её более современной, наглядной и удобной. Новые возможности превращают REPL в мощный инструмент для экспериментов. Хотите проверить идею на лету, попробовать новую библиотеку или отладить сложный фрагмент кода? REPL даст мгновенную обратную связь — без файлов, без настройки, просто пишите код и запускайте.

До недавнего времени стандартный REPL в CPython был предельно минималистичным: быстрым, надёжным и доступным везде, но без тех удобств, которые есть в таких инструментах, как IPython или ptpython. Ситуация начала меняться в Python 3.13, когда по умолчанию стала использоваться современная оболочка на базе PyREPL. Она добавила многострочное редактирование, улучшенную навигацию по истории и более умное автодополнение по Tab.

После прочтения этой статьи вы узнаете, что:

  • В REPL Python 3.14 автодополнение включено по умолчанию. Достаточно нажать Tab в контексте инструкции import, чтобы увидеть возможные варианты.

  • REPL подсвечивает синтаксис Python в реальном времени, если ваш терминал поддерживает ANSI-цвета.

  • В Python 3.14 можно настроить цветовую тему с помощью экспериментального API colorize.settheme() и скрипта PYTHONSTARTUP.

  • Подсветку можно отключить, установив переменные окружения NO_COLOR=1 или PYTHON_COLORS=0.

Автодополнение имён модулей при import делает работу в интерактивном режиме быстрее и удобнее, особенно при обучении и исследовательских задачах. А цветная подсветка улучшает читаемость кода и помогает быстрее замечать опечатки и синтаксические ошибки.

Интерактивный REPL до Python 3.14

Когда вы впервые устанавливаете Python, один из самых быстрых способов его попробовать — это интерактивный REPL (Read–Eval–Print Loop), запускаемый прямо в командной строке или терминале. REPL — это оболочка, в которой можно писать код на Python, тут же его запускать и сразу видеть результат. Это среда быстрого старта, идеально подходящая для экспериментов, обучения и отладки без необходимости создавать и запускать отдельные скрипты.

Многие годы стандартный REPL в CPython оставался максимально лёгким и минималистичным, предлагая совсем немного возможностей. На этом фоне инструменты вроде IPython, bpython и ptpython давали куда более богатый интерактивный опыт.

Однако в последние годы ситуация начала меняться. Начиная с Python 3.13, стандартный REPL основан на pyrepl из проекта PyPy. Этот инструмент написан на Python, спроектирован с учётом расширяемости и безопасности, а также предоставляет более современную интерактивную оболочку с целым набором функций:

  • Цвет по умолчанию: цветные подсказки и трассировки ошибок. Поведение можно настраивать с помощью переменных окружения PYTHON_COLORS или NO_COLOR.

  • Быстрые команды REPL: используйте exitquithelp и clear как команды, а не как вызовы функций с круглыми скобками.

  • Встроенный браузер справки: нажмите F1, чтобы открыть справочник в pager’е и просматривать документацию Python, модулей и объектов.

  • Постоянная история команд: нажмите F2, чтобы открыть историю команд в pager’е и сохранять её между сессиями — удобно копировать и переиспользовать код.

  • Многострочное редактирование: редактируйте и перезапускайте целые блоки кода — функции, классы, циклы — единым куском. Структура блока при этом сохраняется в истории.

  • Надёжная вставка и режим paste: можно безопасно вставлять целые скрипты или большие куски кода. При желании доступен специальный режим вставки (F3), хотя обычно прямая вставка работает без проблем.

  • Умное автодополнение по Tab: предложения обновляются по мере набора и скрывают лишнее, уменьшая шум.

В Python 3.14 REPL сделал ещё один шаг вперёд и получил следующие улучшения:

  • расширенное автодополнение, которое теперь охватывает имена модулей и подмодулей в инструкциях import;

  • подсветку синтаксиса в реальном времени — теперь ваш код в REPL выглядит так же удобно для чтения, как в любимом редакторе или IDE.

Чтобы воспользоваться новыми возможностями, ничего дополнительно устанавливать или настраивать не нужно — достаточно, чтобы ваш терминал поддерживал вывод ANSI-цветов.

Улучшения автодополнения

В Python 3.14 логика автодополнения расширена: теперь REPL распознаёт контексты import и предлагает имена модулей или пакетов в зависимости от введённого текста. Если вы набираете инструкцию import или from ... import и нажимаете Tab, REPL просматривает путь импорта и показывает доступные имена модулей, совпадающие с введённым фрагментом.

Например, если набрать import, а затем дважды нажать Tab, вы получите полный список всех доступных в данный момент модулей и пакетов. Если вы начнёте вводить имя модуля, например pat, и нажмёте Tab, REPL автоматически дополнит его до pathlib, так как это единственное совпадение с введённым текстом.

Аналогично, если ввести что-то вроде import lo и нажать Tab после lo, вы получите сообщение, что совпадений несколько. В этом случае можно нажать Tab ещё раз, чтобы увидеть полный список подходящих имён, или продолжить ввод, чтобы сделать поиск более точным:

В конструкции from ... import ... можно получить список подходящих модулей или пакетов после from, а также подмодулей или подпакетов после import. Это позволяет быстро находить и дополнять имена модулей прямо в интерактивном режиме:

На практике конструкция from ... import ... также используется для импорта конкретных объектов, таких как функции и классы, из указанного модуля. Однако для имён самих объектов автодополнение пока не работает:

Если вы вводите from sys import ... и начинаете печатать version, нажатие Tab не даст результата. Это ограничение связано с тем, что для таких подсказок REPL пришлось бы импортировать модуль и проанализировать его содержимое, чтобы предложить возможные варианты.

Подсветка синтаксиса

Теперь REPL подсвечивает синтаксис Python в реальном времени по мере ввода кода. Это улучшает читаемость и помогает быстрее различать разные элементы Python-кода: ключевые слова, строки, комментарии и другие синтаксические конструкции. Все они теперь отображаются разными цветами по умолчанию:

В этом примере видно, как REPL подсвечивает синтаксис прямо во время набора кода. Такая подсветка позволяет быстро замечать синтаксические ошибки ещё в процессе написания.

Вот пример того, как выглядят другие конструкции с новой подсветкой:

Эта функция включена по умолчанию при запуске REPL в терминале, поддерживающем цвета, например Terminal.app, iTerm2 или Windows Terminal, с оболочками Bash, Zsh или PowerShell.

Подсветка использует ту же цветовую схему, что и цветные трассировки ошибок, появившиеся в Python 3.13. Тема по умолчанию обеспечивает контрастное выделение с помощью стандартных 16-цветных ANSI-кодов, что гарантирует широкую совместимость с большинством терминалов.

Внутри REPL выполняет токенизацию кода по мере его ввода и применяет цветовые коды к тексту. Использование ANSI-последовательностей позволяет обойтись без специального графического интерфейса — всё работает в любом текстовом терминале, поддерживающем эти коды.

В результате ключевые слова отображаются одним цветом, строковые литералы — другим, комментарии — третьим и так далее.

Настройка цветовой темы

В Python 3.14 по умолчанию для подсветки синтаксиса используются следующие цвета и параметры форматирования:

Элемент синтаксиса

Цвет по умолчанию

Приглашение (prompt)

ANSIColors.BOLD_MAGENTA

Ключевое слово

ANSIColors.BOLD_BLUE

Soft keyword

ANSIColors.BOLD_BLUE

Встроенное имя

ANSIColors.CYAN

Комментарий

ANSIColors.RED

Строка

ANSIColors.GREEN

Число

ANSIColors.YELLOW

Оператор

ANSIColors.RESET

Можно использовать экспериментальный API, вызывая colorize.settheme(), чтобы программно изменить цветовую тему. Этот вызов можно делать прямо в сессии REPL или подключить его автоматически, настроив переменную окружения PYTHONSTARTUP и создав собственный файл инициализации.

Важно: API colorize.settheme() пока экспериментальный и может измениться в будущих версиях Python. Этот статус прямо указан на странице What’s new in Python 3.14?, так что не стоит считать интерфейс и его поведение полностью стабильными.

Для начала выполните следующую команду:

Windows / Linux / macOS:

$ export PYTHONSTARTUP=~/.pythonstartup

Затем создайте файл .pythonstartup в домашней директории и добавьте в него следующий код:

try:
    from dataclasses import replace
    from _colorize import ANSIColors, default_theme, set_theme
except ImportError:
    pass
else:
    theme = default_theme.copy_with(
        syntax=replace(
            default_theme.syntax,
            keyword=ANSIColors.BOLD_YELLOW,
            string=ANSIColors.INTENSE_BLUE,
            number=ANSIColors.RED,
            comment=ANSIColors.GREY,
        ),
    )
    set_theme(theme)

Кратко о том, что делает этот скрипт:

  • Импортирует replace() из модуля dataclasses, а также API colorize (включая ANSIColorsdefaulttheme и set_theme)

  • Использует конструкцию try … except, чтобы пропустить выполнение в старых версиях Python или окружениях без _colorize, предотвращая ошибки

  • Создаёт новую тему, копируя default_theme и переопределяя цвета для ключевых слов, строк, чисел и комментариев

  • Вызывает set_theme(), чтобы применить новые цвета до появления первого приглашения

После сохранения файла откройте новое окно терминала. Вот как будет выглядеть сравнение между стандартной темой и вашей кастомной:

Слева — тема по умолчанию, справа — ваша кастомная. Какая нравится больше? Вы можете поэкспериментировать с другими комбинациями цветов и создать собственную тему с любимыми оттенками и форматированием текста. Попробуйте!

Если захотите вернуться к стандартной теме, выполните команду unset PYTHONSTARTUP и перезапустите REPL.

Переключение цветов

Вы можете отключить подсветку синтаксиса, полностью отключив поддержку цвета. Для этого установите следующие переменные окружения:

  • NO_COLOR — установите в любое непустое значение, чтобы отключить всю цветную разметку. Эта переменная имеет приоритет над FORCE_COLOR.

  • PYTHON_COLORS — установите в 0, чтобы отключить цвета (включая подсветку синтаксиса), или в 1, чтобы включить их. Эта переменная переопределяет NO_COLOR для интерпретатора Python.

Если ваш терминал или среда не поддерживает цвета, REPL автоматически переключится на вывод обычного текста.

Возврат к классическому REPL

Если вы захотите вернуться к базовому режиму REPL, можно воспользоваться переменной окружения PYTHON_BASIC_REPL. Установите её в любое значение, чтобы запустить классический REPL без функций PyREPL. Учтите, что это отключит подсветку синтаксиса, навигацию по истории, режим вставки и другие современные возможности.

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

Windows / Linux / macOS:

$ PYTHON_BASIC_REPL=1 python

После запуска этих команд вы получите классический REPL — лёгкий и с минимальным набором возможностей.

Русскоязычное сообщество про Python

Друзья! Эту статью перевела команда Python for Devs — канала, где каждый день выходят самые свежие и полезные материалы о Python и его экосистеме. Подписывайтесь, чтобы ничего не пропустить!

Заключение

Мы познакомились с новыми возможностями REPL в Python 3.14: расширенным автодополнением для инструкций import и подсветкой синтаксиса в реальном времени. Теперь REPL подсказывает имена модулей и пакетов во время ввода и визуально различает элементы синтаксиса Python с помощью цветов.

Вы также настроили цветовую тему под свои предпочтения и узнали, как при необходимости отключить подсветку.

Следить за развитием REPL особенно полезно разработчикам, которые используют оболочку для прототипирования, отладки или изучения библиотек.

После прочтения этой статьи вы научились:

  • Использовать автодополнение имён модулей и пакетов в инструкциях import в REPL Python 3.14

  • Пользоваться подсветкой синтаксиса в реальном времени для улучшения читаемости кода и поиска ошибок

  • Настраивать цветовую тему REPL с помощью экспериментального API colorize.settheme() и стартового скрипта

  • Отключать цветной вывод или возвращаться к классическому REPL с помощью переменных окружения

С этими навыками вы сможете эффективнее использовать новые возможности REPL, повышая продуктивность и комфорт при интерактивной работе с Python.

Комментарии (0)


  1. Tailogs
    22.09.2025 10:15

    Отличная статья, благодарю за информацию!