rlcompleter
— Функция завершения для GNU readline¶
Исходный код: Lib/rlcompleter.py
Модуль rlcompleter
определяет функцию завершения, подходящую для передачи в set_completer()
в модуле readline
.
Когда этот модуль импортируется на платформу Unix с доступным модулем readline
, автоматически создается экземпляр класса Completer
и его методу complete()
присваивается значение readline completer. Метод обеспечивает завершение работы с допустимым Python identifiers and keywords.
Пример:
>>> import rlcompleter
>>> import readline
>>> readline.parse_and_bind("tab: complete")
>>> readline. <TAB PRESSED>
readline.__doc__ readline.get_line_buffer( readline.read_init_file(
readline.__file__ readline.insert_text( readline.set_completer(
readline.__name__ readline.parse_and_bind(
>>> readline.
Модуль rlcompleter
предназначен для использования с interactive mode в Python. Если Python не запускается с параметром -S
, модуль автоматически импортируется и настраивается (см. Конфигурация строки чтения).
На платформах без readline
класс Completer
, определенный этим модулем, все еще может использоваться для пользовательских целей.
- class rlcompleter.Completer¶
Завершенные объекты имеют следующий метод:
- complete(text, state)¶
Возвращает следующее возможное завершение для text.
При вызове модулем
readline
этот метод вызывается последовательно с помощьюstate == 0, 1, 2, ...
до тех пор, пока метод не вернетNone
.При вызове для текста, который не содержит символа точки (
'.'
),, он будет заполнен из имен, определенных в настоящее время в__main__
,builtins
, и ключевых слов (как определено в модулеkeyword
).Если вызывается имя, указанное точкой, он попытается вычислить что-либо без очевидных побочных эффектов (функции вычисляться не будут, но он может генерировать вызовы
__getattr__()
) вплоть до последней части и найти совпадения для остальных с помощью функцииdir()
. Любое исключение, возникающее во время вычисления выражения, перехватывается, отключается и возвращаетсяNone
.