Skip to main content

6.8. rlcompleter — GNU readline的完成功能

源代码: 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的 交互模式。除非Python使用 -S 选项运行,否则模块将自动导入和配置(参见 Readline配置)。

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

6.8.1. 完成者对象

Completer对象有以下方法:

Completer.complete(text, state)

返回 text 的第 state 个完成。

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

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