6.8. rlcompleter - GNU readline的完成功能

源代码: Lib / rlcompleter.py

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

当在Unix平台上导入readline模块时,会自动创建Completer类的实例及其complete()方法设置为readline completer。

例:

>>> 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的interactive mode除非Python使用-S选项运行,模块将自动导入和配置(参见Readline configuration)。

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

6.8.1.Completer对象

Completer对象有以下方法:

Completer.complete(text, state)

文本返回状态完成。

If called for text that doesn’t include a period character ('.'), it will complete from names currently defined in __main__, builtins and keywords (as defined by the keyword module).

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