14. Интерактивное редактирование ввода и подстановка истории¶
Некоторые версии интерпретатора Python поддерживают редактирование текущей строки ввода и подстановку из истории команд, аналогично возможностям оболочек Korn и GNU Bash. Это реализовано с помощью библиотеки GNU Readline, которая поддерживает различные стили редактирования. У этой библиотеки есть собственная документация, которую мы не будем здесь дублировать.
14.1. Автодополнение и редактирование истории¶
Автодополнение имён переменных и модулей включено автоматически при запуске интерпретатора, поэтому клавиша Tab вызывает функцию автодополнения, которая просматривает имена инструкций Python, текущие локальные переменные и доступные модули. Для точечных выражений, таких как string.a, она вычисляет выражение до последней '.' и затем предлагает варианты автодополнения из атрибутов полученного объекта. Обратите внимание, что это может выполнить код, определенный в приложении, если объект с методом __getattr__() является частью выражения. Конфигурация по умолчанию также сохраняет историю ваших команд в файл с именем .python_history в домашнем каталоге вашего пользователя. История будет доступна снова во время следующей интерактивной сессии интерпретатора.
14.2. Альтернативы интерактивному интерпретатору¶
Эта возможность — огромный шаг вперёд по сравнению с более ранними версиями интерпретатора. Тем не менее, некоторые пожелания остались: было бы неплохо, если бы предлагались правильные отступы в строках продолжения (анализатор знает, требуется ли далее токен INDENT). Механизм автодополнения мог бы использовать таблицу символов интерпретатора. Также была бы полезна команда для проверки (или даже предложения) парных скобок, кавычек и т.д.
Один из альтернативных улучшенных интерактивных интерпретаторов, который существует уже довольно долгое время, — это IPython, с функциями автодополнения по табуляции, исследования объектов и продвинутого управления историей. Его также можно полностью настраивать и встраивать в другие приложения. Ещё одна похожая улучшенная интерактивная среда — bpython.