16.9. rlcompleter — GNU readline 的完成函数 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/rlcompleter
跳转至:导航、​搜索

16.9. 完成者 — GNU readline 的补全函数

源代码: :source:`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 的交互模式。 用户可以将以下几行添加到他或她的初始化文件(由 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 对象具有以下方法:

Completer.complete(text, state)

text 返回第 state 个完成。

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

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