Возникало ли у вас когда-нибудь желание быстро испытать какую-нибудь свежую идею, прибегнув к интерфейсу командной строки Python, к REPL? Вероятно, если речь идёт об эксперименте буквально с несколькими строками кода, вам просто не захочется создавать для этого новый «блокнот» Jupyter.
Но в подобной ситуации, возможно, вас не особенно порадует и перспектива использования классической консоли Python, так как она, в отличие от Jupyter Notebook, не поддерживает автодополнение ввода и не умеет работать с документационными строками. В REPL, кроме того, нельзя, после нажатия на Enter
, исправлять ошибки в коде.
Что если можно было бы превратить довольно-таки скучную командную строку Python в многофункциональный инструмент, вроде того, запись работы с которым показана ниже?

Продвинутая командная строка Python
Собственно, именно на тех, у кого возникает подобное желание, и ориентирован проект ptpython.
Что такое ptpython?
Ptpython можно назвать улучшенным интерфейсом командной строки Python. Установить его можно так:
pip install ptpython
А для того чтобы его запустить — достаточно воспользоваться следующей командой:
ptpython
Возможности по вводу данных
▍Проверка вводимых данных
Если, работая в классической командной строке Python, допустить ошибку при вводе команды, то, после нажатия на Enter
, нельзя вернуться к неправильному коду и его исправить.

Ошибка, допущенная в обычной командной строке Python
Но ptpython позволяет проверить то, что введено с клавиатуры, ещё до нажатия на Enter
. На следующем анимированном изображении показано, что пропущенная закрывающая скобка вызывает появление сообщения об ошибке. Эту ошибку можно тут же исправить.

Исправление ошибки при работе в ptpython
▍Автодополнение ввода, основанное на исторических данных
Если вы когда-нибудь подумывали о том, что при работе с командной строкой Python не помешали бы возможности по автодополнению ввода, основанному на исторических данных, то знайте, что ptpython это поддерживает.

Автодополнение ввода, основанное на исторических данных
Но эта возможность ptpython, по умолчанию, не включена. Правда, для того чтобы включить её, достаточно, воспользовавшись клавишей F2
, вызвать меню, в котором, пользуясь клавишами-стрелками, надо найти опцию Auto suggestion
и перевести её в состояние on
. Для закрытия меню надо нажать на Enter
.

Включение автодополнения ввода
После включения опции Auto suggestion
у вас должно заработать автодополнение ввода, основанное на истории. Для того чтобы воспользоваться тем, что предлагает ptpython, достаточно нажать клавишу-стрелку Вправо
.
▍Использование подсказок при вводе кода
Если при работе с объектом ввести точку — будет выведен список его свойств и методов.

Подсказки, выводимые после ввода точки
Для выбора нужного варианта используются клавиши-стрелки, а после выбора подходящего варианта можно продолжить ввод своего кода.
▍Вставка данных из истории команд
Посмотреть историю команд можно, нажав клавишу F3
. Для того чтобы выделить код, который надо скопировать в рабочую область из панели истории, нужно перейти на соответствующую строку клавишами-стрелками и нажать на клавишу Пробел
.
После того, как выбор нужного участка кода завершён, достаточно нажать на Enter
и соответствующий код будет вставлен в рабочую область.

Копирование кода из панели истории
Обратите внимание на то, что код в рабочую область будет вставлен в порядке его выполнения.
▍Режим вставки
Возникало ли у вас когда-нибудь желание отредактировать код, вставленный в командную строку Python? В обычном Python REPL сделать этого нельзя.

Работа в обычной командной строке Python
А ptpython позволяет редактировать вставленный код, доводя его до нужного состояния.

Редактирование вставленного кода в ptpython
Для того чтобы включить режим вставки — достаточно нажать на клавишу F6
. Когда этот режим активирован — код, при нажатии на Enter
, выполняться не будет. А после того, как код будет готов к выполнению — нужно снова нажать F6
для выключения режима вставки, а потом дважды нажать на Enter
.
Возможности по выводу данных
▍Просмотр сигнатур функций и документационных строк
Ptpython позволяет просматривать сведения о параметрах функций и конструкторов.

Просмотр сведений о конструкторе DataFrame
Ещё можно смотреть документационные строки классов и функций. Для включения этой возможности нужно открыть меню (F2
), а потом включить опцию Show docstring
.

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

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

Выделение парных скобок
▍Добавление пустой строки после введённых или выведенных данных
Если нужно улучшить читабельность кода — можно сделать так, чтобы после выводимых или вводимых данных автоматически добавлялись бы пустые строки.

Улучшение читабельности кода за счёт пустых строк
Для того чтобы включить эту возможность — нужно, вызвав меню клавишей F2
, включить опции Blank line after input
и Blank line after output
.

Включение опций Blank line after input и Blank line after output
Выделение синтаксических конструкций
Ptpython, кроме прочего, поддерживает подсветку синтаксиса.

Подсветка синтаксиса
Для переключения цветовых тем можно воспользоваться клавишей-стрелкой Вправо
, нажимая её до тех пор, пока не будет выбрана подходящая тема.
В системе имеется 39 тем. Если, например, вам хочется выбрать такую же цветовую схему, которая используется в Sublime Text — знайте, что она имеет код monokai
. Этот код нужно ввести в опции меню Code
, которую можно найти в разделе Colors
.

Настройка темы в меню
Магические команды IPython
Ptpython поддерживает магические команды IPython. Для того чтобы получить доступ к возможностям IPython, нужно воспользоваться командой ptipython
.

Возможности IPython

Возможности IPython
Настройка ptpython
Те изменения, которые вносят в настройки ptpython во время работы, исчезают после окончания сеанса работы с программой.
Настройки, которые используются в каждом сеансе, должны быть описаны в файле $XDG_CONFIG_HOME/ptpython/config.py
. В Linux путь к нему выглядит как ~/.config/ptpython/config.py
.
Вот файл, который содержит все те полезные настройки программы, о которых мы говорили выше.
Итоги
В этом материале мы рассмотрели лишь мои любимые возможности ptpython. А их, на самом деле, гораздо больше. Если ptpython вам понравится, вы, наверняка, найдёте в нём что-то такое, что пригодится именно вам.
Планируете ли вы пользоваться ptpython?

Автор: ru_vds