14. Редактирование интерактивного ввода и подстановка истории

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

14.1. Завершение по табуляции и редактирование истории

Завершение имен переменной и модуля автоматически доступно (docs.python.org/3/library/site.html#rlcompleter-config), исходя из начальной идеи интерпретатора, так что клавиша Tab запускает функцию завершения. Она просматривает операторы имен, текущие локальные переменные и доступные имена модулей. Для выражений с точкой, таких как string.a, она будет оценивать выражение до финальной точки '.' и затем предлагать завершения из атрибутов результирующего объекта. Заметьте, что это может выполнить определенный приложением код, если объект с методом __getattr__() (docs.python.org/3/reference/datamodel.html#object.__getattr__) является частью выражения. По умолчанию конфигурация также сохраняет вашу историю в файле с именем .python_history в вашей пользовательской директории. История будет доступна снова во время следующей интерактивной сессии интерпретатора.

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

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

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

Создано