Возникало ли у вас когда-нибудь желание быстро испытать какую-нибудь свежую идею, прибегнув к интерфейсу командной строки Python, к REPL? Вероятно, если речь идёт об эксперименте буквально с несколькими строками кода, вам просто не захочется создавать для этого новый «блокнот» Jupyter.
Но в подобной ситуации, возможно, вас не особенно порадует и перспектива использования классической консоли Python, так как она, в отличие от Jupyter Notebook, не поддерживает автодополнение ввода и не умеет работать с документационными строками. В REPL, кроме того, нельзя, после нажатия на Enter
, исправлять ошибки в коде.
Что если можно было бы превратить довольно-таки скучную командную строку Python в многофункциональный инструмент, вроде того, запись работы с которым показана ниже?
![Ptpython: улучшенный REPL для Python - 1 Ptpython: улучшенный REPL для Python - 1](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python.gif)
Продвинутая командная строка Python
Собственно, именно на тех, у кого возникает подобное желание, и ориентирован проект ptpython.
Что такое ptpython?
Ptpython можно назвать улучшенным интерфейсом командной строки Python. Установить его можно так:
pip install ptpython
А для того чтобы его запустить — достаточно воспользоваться следующей командой:
ptpython
Возможности по вводу данных
▍Проверка вводимых данных
Если, работая в классической командной строке Python, допустить ошибку при вводе команды, то, после нажатия на Enter
, нельзя вернуться к неправильному коду и его исправить.
![Ptpython: улучшенный REPL для Python - 2 Ptpython: улучшенный REPL для Python - 2](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-2.png)
Ошибка, допущенная в обычной командной строке Python
Но ptpython позволяет проверить то, что введено с клавиатуры, ещё до нажатия на Enter
. На следующем анимированном изображении показано, что пропущенная закрывающая скобка вызывает появление сообщения об ошибке. Эту ошибку можно тут же исправить.
![Ptpython: улучшенный REPL для Python - 3 Ptpython: улучшенный REPL для Python - 3](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-3.gif)
Исправление ошибки при работе в ptpython
▍Автодополнение ввода, основанное на исторических данных
Если вы когда-нибудь подумывали о том, что при работе с командной строкой Python не помешали бы возможности по автодополнению ввода, основанному на исторических данных, то знайте, что ptpython это поддерживает.
![Ptpython: улучшенный REPL для Python - 4 Ptpython: улучшенный REPL для Python - 4](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-4.gif)
Автодополнение ввода, основанное на исторических данных
Но эта возможность ptpython, по умолчанию, не включена. Правда, для того чтобы включить её, достаточно, воспользовавшись клавишей F2
, вызвать меню, в котором, пользуясь клавишами-стрелками, надо найти опцию Auto suggestion
и перевести её в состояние on
. Для закрытия меню надо нажать на Enter
.
![Ptpython: улучшенный REPL для Python - 5 Ptpython: улучшенный REPL для Python - 5](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-5.png)
Включение автодополнения ввода
После включения опции Auto suggestion
у вас должно заработать автодополнение ввода, основанное на истории. Для того чтобы воспользоваться тем, что предлагает ptpython, достаточно нажать клавишу-стрелку Вправо
.
▍Использование подсказок при вводе кода
Если при работе с объектом ввести точку — будет выведен список его свойств и методов.
![Ptpython: улучшенный REPL для Python - 6 Ptpython: улучшенный REPL для Python - 6](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-6.gif)
Подсказки, выводимые после ввода точки
Для выбора нужного варианта используются клавиши-стрелки, а после выбора подходящего варианта можно продолжить ввод своего кода.
▍Вставка данных из истории команд
Посмотреть историю команд можно, нажав клавишу F3
. Для того чтобы выделить код, который надо скопировать в рабочую область из панели истории, нужно перейти на соответствующую строку клавишами-стрелками и нажать на клавишу Пробел
.
После того, как выбор нужного участка кода завершён, достаточно нажать на Enter
и соответствующий код будет вставлен в рабочую область.
![Ptpython: улучшенный REPL для Python - 7 Ptpython: улучшенный REPL для Python - 7](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-7.gif)
Копирование кода из панели истории
Обратите внимание на то, что код в рабочую область будет вставлен в порядке его выполнения.
▍Режим вставки
Возникало ли у вас когда-нибудь желание отредактировать код, вставленный в командную строку Python? В обычном Python REPL сделать этого нельзя.
![Ptpython: улучшенный REPL для Python - 8 Ptpython: улучшенный REPL для Python - 8](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-8.png)
Работа в обычной командной строке Python
А ptpython позволяет редактировать вставленный код, доводя его до нужного состояния.
![Ptpython: улучшенный REPL для Python - 9 Ptpython: улучшенный REPL для Python - 9](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-9.gif)
Редактирование вставленного кода в ptpython
Для того чтобы включить режим вставки — достаточно нажать на клавишу F6
. Когда этот режим активирован — код, при нажатии на Enter
, выполняться не будет. А после того, как код будет готов к выполнению — нужно снова нажать F6
для выключения режима вставки, а потом дважды нажать на Enter
.
Возможности по выводу данных
▍Просмотр сигнатур функций и документационных строк
Ptpython позволяет просматривать сведения о параметрах функций и конструкторов.
![Ptpython: улучшенный REPL для Python - 10 Ptpython: улучшенный REPL для Python - 10](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-10.png)
Просмотр сведений о конструкторе DataFrame
Ещё можно смотреть документационные строки классов и функций. Для включения этой возможности нужно открыть меню (F2
), а потом включить опцию Show docstring
.
![Ptpython: улучшенный REPL для Python - 11 Ptpython: улучшенный REPL для Python - 11](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-11.png)
Включение вывода документационных строк
Теперь можно просматривать документацию по используемым программным конструкциям.
![Ptpython: улучшенный REPL для Python - 12 Ptpython: улучшенный REPL для Python - 12](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-12.png)
Вывод документации
▍Выделение парных скобок
Для того чтобы повысить удобство работы со сложными конструкциями, в которых используются скобки, ptpython умеет выделять парные скобки.
![Ptpython: улучшенный REPL для Python - 13 Ptpython: улучшенный REPL для Python - 13](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-13.png)
Выделение парных скобок
▍Добавление пустой строки после введённых или выведенных данных
Если нужно улучшить читабельность кода — можно сделать так, чтобы после выводимых или вводимых данных автоматически добавлялись бы пустые строки.
![Ptpython: улучшенный REPL для Python - 14 Ptpython: улучшенный REPL для Python - 14](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-14.png)
Улучшение читабельности кода за счёт пустых строк
Для того чтобы включить эту возможность — нужно, вызвав меню клавишей F2
, включить опции Blank line after input
и Blank line after output
.
![Ptpython: улучшенный REPL для Python - 15 Ptpython: улучшенный REPL для Python - 15](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-15.png)
Включение опций Blank line after input и Blank line after output
Выделение синтаксических конструкций
Ptpython, кроме прочего, поддерживает подсветку синтаксиса.
![Ptpython: улучшенный REPL для Python - 16 Ptpython: улучшенный REPL для Python - 16](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-16.png)
Подсветка синтаксиса
Для переключения цветовых тем можно воспользоваться клавишей-стрелкой Вправо
, нажимая её до тех пор, пока не будет выбрана подходящая тема.
В системе имеется 39 тем. Если, например, вам хочется выбрать такую же цветовую схему, которая используется в Sublime Text — знайте, что она имеет код monokai
. Этот код нужно ввести в опции меню Code
, которую можно найти в разделе Colors
.
![Ptpython: улучшенный REPL для Python - 17 Ptpython: улучшенный REPL для Python - 17](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-17.png)
Настройка темы в меню
Магические команды IPython
Ptpython поддерживает магические команды IPython. Для того чтобы получить доступ к возможностям IPython, нужно воспользоваться командой ptipython
.
![Ptpython: улучшенный REPL для Python - 18 Ptpython: улучшенный REPL для Python - 18](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-18.png)
Возможности IPython
![Ptpython: улучшенный REPL для Python - 19 Ptpython: улучшенный REPL для Python - 19](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-19.png)
Возможности IPython
Настройка ptpython
Те изменения, которые вносят в настройки ptpython во время работы, исчезают после окончания сеанса работы с программой.
Настройки, которые используются в каждом сеансе, должны быть описаны в файле $XDG_CONFIG_HOME/ptpython/config.py
. В Linux путь к нему выглядит как ~/.config/ptpython/config.py
.
Вот файл, который содержит все те полезные настройки программы, о которых мы говорили выше.
Итоги
В этом материале мы рассмотрели лишь мои любимые возможности ptpython. А их, на самом деле, гораздо больше. Если ptpython вам понравится, вы, наверняка, найдёте в нём что-то такое, что пригодится именно вам.
Планируете ли вы пользоваться ptpython?
![Ptpython: улучшенный REPL для Python - 20 Ptpython: улучшенный REPL для Python - 20](https://www.pvsm.ru/images/2021/06/05/Ptpython-uluchshennyi-REPL-dlya-Python-20.jpg)
Автор: ru_vds