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