Интерактивное редактирование ввода и замена истории

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

 Завершение ввода и редактирование истории

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

 Альтернативы интерактивному переводчику

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

Альтернативный расширенный интерактивный интерпретатор, существующий уже довольно давно, — это IPython , который поддерживает автодополнение по клавише Tab, исследование объектов и расширенное управление историей. Его также можно полностью настраивать и встраивать в другие приложения. Другая похожая расширенная интерактивная среда — bpython .