6.8. rlcompleter — GNU readline 的完成函数 — Python 文档

来自菜鸟教程
Python/docs/3.6/library/rlcompleter
跳转至:导航、​搜索

6.8. 完成者 — GNU readline 的补全函数

源代码: :source:`Lib/rlcompleter.py`



rlcompleter 模块通过完成有效的 Python 标识符和关键字定义了适用于 readline 模块的完成函数。

当这个模块在 readline 模块可用的 Unix 平台上导入时,会自动创建一个 Completer 类的实例,并将其 complete() 方法设置为 ]readline 完成器。

例子:

>>> 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 的 交互模式 。 除非使用 -S 选项运行 Python,模块会自动导入和配置(请参阅 Readline 配置 )。

在没有 readline 的平台上,该模块定义的 Completer 类仍然可以用于自定义目的。

6.8.1. 完成对象

Completer 对象具有以下方法:

Completer.complete(text, state)

text 返回第 state 个完成。

如果调用不包含句点字符 ('.') 的 text,它将从 __main__builtins 中当前定义的名称中完成和关键字(由 keyword 模块定义)。

如果调用带点名称,它将尝试评估任何没有明显副作用的东西(不会评估函数,但它可以生成对 __getattr__() 的调用)直到最后一部分,并为其余部分找到匹配项通过 dir() 函数。 在表达式求值过程中引发的任何异常都会被捕获、静音并返回 None