Spec-Zone.ru › Python 3.13

rlcompleter — функция автодополнения для GNU readline

Исходный код: Lib/rlcompleter.py

Модуль rlcompleter определяет функцию автодополнения, которую можно передать в set_completer() модуля readline.

При импорте этого модуля на платформе Unix, где доступен модуль readline, автоматически создаётся экземпляр класса Completer, а его метод complete() устанавливается в качестве функции автодополнения readline. Метод выполняет автодополнение допустимых в Python идентификаторов и ключевых слов.

Пример:

>>> 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, определённый этим модулем, всё равно можно использовать для собственных целей.

class rlcompleter.Completer

Объекты Completer имеют следующий метод:

complete(text, state)

Возвращает следующее возможное дополнение для text.

При вызове модулем readline этот метод вызывается последовательно с state == 0, 1, 2, ..., пока метод не вернёт None.

При вызове для text, не содержащего символ точки ('.'), поиск дополнений выполняется среди имён, определённых в __main__, builtins, а также среди ключевых слов (определённых модулем keyword).

При вызове для имени с точками метод попытается вычислить всё, кроме последней части, избегая очевидных побочных эффектов (функции не вызываются, но могут выполняться обращения к __getattr__()), а затем найдёт совпадения для оставшейся части с помощью функции dir(). Любое исключение, возникшее при вычислении выражения, перехватывается и подавляется, после чего возвращается None.

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/rlcompleter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API