Документация Python неофициальный перевод

rlcompleter.md

47 строк · 4.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3/library/rlcompleter.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `rlcompleter` – функция автодополнения для GNU readline89**Исходный код:** [Lib/rlcompleter.py](https://python-all.ru/src/3.14/Lib/rlcompleter.py)1011---1213Модуль `rlcompleter` определяет функцию автодополнения, подходящую для передачи в [`set_completer()`](https://python-all.ru/3/library/readline.html#readline.set_completer) в модуле [`readline`](https://python-all.ru/3/library/readline.html#module-readline).1415Когда этот модуль импортируется на платформе Unix с доступным модулем [`readline`](https://python-all.ru/3/library/readline.html#module-readline), автоматически создаётся экземпляр класса [`Completer`](https://python-all.ru/3/library/rlcompleter.html#rlcompleter.Completer) и его метод [`complete()`](https://python-all.ru/3/library/rlcompleter.html#rlcompleter.Completer.complete) устанавливается как [автодополнение readline](https://python-all.ru/3/library/readline.html#readline-completion). Метод обеспечивает автодополнение допустимых в Python [идентификаторов и ключевых слов](https://python-all.ru/3/reference/lexical_analysis.html#identifiers).1617Пример:1819```python20>>> import rlcompleter21>>> import readline22>>> readline.parse_and_bind("tab: complete")23>>> readline. <TAB PRESSED>24readline.__doc__          readline.get_line_buffer(  readline.read_init_file(25readline.__file__         readline.insert_text(      readline.set_completer(26readline.__name__         readline.parse_and_bind(27>>> readline.28```2930Модуль `rlcompleter` предназначен для использования в [интерактивном режиме](https://python-all.ru/3/tutorial/interpreter.html#tut-interactive) Python. Если Python не запущен с опцией [`-S`](https://python-all.ru/3/using/cmdline.html#cmdoption-S), модуль автоматически импортируется и настраивается (см. [конфигурацию Readline](https://python-all.ru/3/library/site.html#rlcompleter-config)).3132На платформах без [`readline`](https://python-all.ru/3/library/readline.html#module-readline) класс [`Completer`](https://python-all.ru/3/library/rlcompleter.html#rlcompleter.Completer), определённый этим модулем, всё ещё может использоваться для пользовательских целей.3334#### `class rlcompleter.Completer`3536Объекты Completer имеют следующий метод:3738#### `complete(text, state)`3940Возвращает следующее возможное автодополнение для *text*.4142При вызове модулем [`readline`](https://python-all.ru/3/library/readline.html#module-readline) этот метод вызывается последовательно с `state == 0, 1, 2, ...` до тех пор, пока метод не вернёт `None`.4344Если *text* не содержит символа точки (`'.'`), будет выполняться автодополнение из имён, определённых в [`__main__`](https://python-all.ru/3/library/__main__.html#module-__main__), [`builtins`](https://python-all.ru/3/library/builtins.html#module-builtins) и ключевых слов (в соответствии с модулем [`keyword`](https://python-all.ru/3/library/keyword.html#module-keyword)).4546Если вызывается для имени с точкой, он попытается вычислить всё, что не имеет очевидных побочных эффектов (функции не будут вызываться, но он может генерировать вызовы [`__getattr__()`](https://python-all.ru/3/reference/datamodel.html#object.__getattr__)) до последней части, и найти совпадения для остального с помощью функции [`dir()`](https://python-all.ru/3/library/functions.html#dir). Любое исключение, возникшее при вычислении выражения, перехватывается, подавляется, и возвращается [`None`](https://python-all.ru/3/library/constants.html#None).47