14. Интерактивное редактирование ввода и подстановка истории
************************************************************

Некоторые версии интерпретатора Python поддерживают редактирование
текущей строки ввода и подстановку из истории команд, аналогично
возможностям оболочек Korn и GNU Bash. Это реализовано с помощью
библиотеки GNU Readline, которая поддерживает различные стили
редактирования. У этой библиотеки есть собственная документация,
которую мы не будем здесь дублировать.


14.1. Автодополнение и редактирование истории
=============================================

Автодополнение имён переменных и модулей включено автоматически при
запуске интерпретатора, поэтому клавиша "Tab" вызывает функцию
автодополнения, которая просматривает имена инструкций Python, текущие
локальные переменные и доступные модули. Для точечных выражений, таких
как "string.a", она вычисляет выражение до последней "'.'" и затем
предлагает варианты автодополнения из атрибутов полученного объекта.
Обратите внимание, что это может выполнить код, определенный в
приложении, если объект с методом "__getattr__()" является частью
выражения. Конфигурация по умолчанию также сохраняет историю ваших
команд в файл с именем ".python_history" в домашнем каталоге вашего
пользователя. История будет доступна снова во время следующей
интерактивной сессии интерпретатора.


14.2. Альтернативы интерактивному интерпретатору
================================================

Эта возможность — огромный шаг вперёд по сравнению с более ранними
версиями интерпретатора. Тем не менее, некоторые пожелания остались:
было бы неплохо, если бы предлагались правильные отступы в строках
продолжения (анализатор знает, требуется ли далее токен "INDENT").
Механизм автодополнения мог бы использовать таблицу символов
интерпретатора. Также была бы полезна команда для проверки (или даже
предложения) парных скобок, кавычек и т.д.

Один из альтернативных улучшенных интерактивных интерпретаторов,
который существует уже довольно долгое время, — это IPython, с
функциями автодополнения по табуляции, исследования объектов и
продвинутого управления историей. Его также можно полностью
настраивать и встраивать в другие приложения. Ещё одна похожая
улучшенная интерактивная среда — bpython.
