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 的 交互模式。除非 Python 使用 -S
选项运行,否则该模块会自动导入和配置(请参阅 Readline 配置)。
在没有 readline
的平台上,此模块定义的 Completer
类仍然可以用于自定义目的。
- class rlcompleter.Completer¶
Completer 对象具有以下方法
- complete(text, state)¶
返回 text 的下一个可能的补全项。
当被
readline
模块调用时,此方法会连续调用,state == 0, 1, 2, ...
,直到该方法返回None
。如果为不包含句点字符(
'.'
)的 text 调用,它将从当前在__main__
、builtins
和关键字(由keyword
模块定义)中定义的名称进行补全。如果为点号名称调用,它将尝试计算没有任何明显副作用的内容(函数将不会被计算,但它可能会生成对
__getattr__()
的调用)直到最后一部分,并通过dir()
函数查找其余部分的匹配项。在表达式计算期间引发的任何异常都会被捕获、抑制,并返回None
。