Модуль rlcompleter
определяет функцию завершения, подходящую для модуля readline
, путем заполнения действительных идентификаторов и ключевых слов Python.
Когда модуль rlcompleter
импортируется на платформу Unix с доступным модулем readline
, автоматически создается экземпляр класса rlcompleter.Completer
, а его метод Completer.complete()
устанавливается как завершитель readline
.
rlcompleter
:>>> 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
разработан для использования в интерактивном режиме Python. Если Python не запущен с параметром -S
, то модуль автоматически импортируется и настраивается (подробнее смотрите "Инициализации и конфигурация модуля readline
").
На платформах без поддержки модуля readline
, класс Completer, определенный этим модулем rlcompleter
, по-прежнему можно использовать для специальных целей.
Completer
.Объект Completer
определяет единственный метод.
Completer.complete(text, state)
:Метод Completer.complete()
возвращает состояние state
для текста text
.
Если вызывается для текста text
, не содержащего символа точки '.'
, то текст будет завершен из имен, в настоящее время определенных в __main__
, встроенных builtins
объектах и ключевых словах (как определено модулем keyword
).
При вызове имени, разделенного точками, метод Completer.complete()
будет пытаться оценить что-либо без очевидных побочных эффектов (функции не будут оцениваться, но он может генерировать вызовы __getattr__()
) вплоть до последней части и находить совпадения для остальных с помощью функции dir()
. Любое исключение, возникшее во время вычисления выражения, перехватывается, глушится и возвращается None
.