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

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

14.1. Tab-автодополнение и история редактирования

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

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

Данное средство является огромным шагом вперед по сравнению с предыдущими версиями интерпретатора; однако, остаются некоторые пожелания: Было бы неплохо, если бы соответствующие добавление отступов было бы предложено на строках продолжения (парсер знает, нужен ли отступ далее). Механизм автодополнения мог бы использовать таблицу символов интерпретатора. Команда проверки (или даже рекомендации) парных скобок, кавычек и т.д. также была бы полезна.

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