16.9. rlcompleter — GNU readline 的完成Function

源代码: Lib/rlcompleter.py


rlcompleter模块pass完成有效的 Python 标识符和关键字来定义适用于readline模块的完成Function。

在具有readline模块可用的 Unix 平台上导入此模块时,会自动创建Completer类的实例,并将其complete()方法设置为readline completeer。

Example:

>>> 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 的交互模式一起使用。用户可以将以下几行添加到他或她的初始化文件(由 PYTHONSTARTUP环境变量标识)中,以实现 Tab 自动完成:

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

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

16.9.1. 完成对象

完成器对象具有以下方法:

  • Completer. complete(* text state *)
    • 返回* state state *完成。

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

如果要求使用点名,它将try评估没有明显副作用(不会评估Function,但可以生成对getattr()的调用)的任何内容,直到最后一部分,然后passdir()函数查找其余部分的匹配项。表达式求值期间引发的任何异常都将被捕获,沉默并返回None