rlcompleter — GNU readline 的补全函数

源代码: Lib/rlcompleter.py


rlcompleter 模块定义了一个适合传递给 set_completer()(在 readline 模块中)的补全函数。

当在支持 readline 模块的 Unix 平台上导入此模块时,会自动创建一个 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 的 交互模式。 除非使用 -S 选项运行 Python,否则该模块会自动导入和配置(请参阅 Readline 配置)。

在不支持 readline 的平台上,此模块定义的 Completer 类仍然可以用于自定义目的。

class rlcompleter.Completer

Completer 对象具有以下方法

complete(text, state)

返回 text 的下一个可能的补全。

当由 readline 模块调用时,将使用 state == 0, 1, 2, ... 连续调用此方法,直到该方法返回 None

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

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