Содержание страницы
14. Интерактивное редактирование ввода и подстановка истории¶Interactive Input Editing and History Substitution
Некоторые версии интерпретатора Python поддерживают редактирование текущей строки ввода и подстановку истории, подобно тому, как это реализовано в оболочках Korn и GNU Bash. Эта возможность реализована с помощью библиотеки GNU Readline, которая поддерживает различные стили редактирования. У этой библиотеки есть собственная документация, которую мы не будем здесь дублировать.
14.1. Автодополнение по табуляции и редактирование истории¶Tab Completion and History Editing
Автодополнение имён переменных и модулей автоматически включается при запуске интерпретатора, так что клавиша Tab вызывает функцию автодополнения; она учитывает имена операторов Python, текущие локальные переменные и доступные имена модулей. Для выражений с точками, таких как string.a, вычисляется часть выражения до последней '.', после чего предлагаются варианты дополнения из атрибутов полученного объекта. Обратите внимание, что это может привести к выполнению кода, определённого в приложении, если в выражении участвует объект с методом __getattr__(). В стандартной конфигурации история также сохраняется в файл .python_history в домашнем каталоге пользователя. История будет доступна снова при следующем сеансе работы в интерактивном интерпретаторе.
14.2. Альтернативы интерактивному интерпретатору¶Alternatives to the Interactive Interpreter
Эта возможность является огромным шагом вперед по сравнению с более ранними версиями интерпретатора; однако остаются некоторые пожелания: было бы хорошо, если бы правильный отступ предлагался на строках продолжения (парсер знает, требуется ли следующий токен отступа). Механизм автодополнения мог бы использовать таблицу символов интерпретатора. Также была бы полезна команда для проверки (или даже предложения) соответствующих скобок, кавычек и т.д.
Одной из альтернатив с расширенными возможностями, которая существует уже довольно давно, является IPython. Он предлагает автодополнение по табуляции, исследование объектов и расширенное управление историей. Его также можно тщательно настраивать и встраивать в другие приложения. Другая подобная среда с расширенными возможностями – bpython.