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
。