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