This document is for an old version of Python that is no longer supported. You should upgrade and read the Python 当前稳定版本的文档.

# 16.9. `rlcompleter` — GNU readline 的补全函数

源代码: Lib/rlcompleter.py

`rlcompeleter` 通过补全有效的 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.

The `rlcompleter` module is designed for use with Python’s interactive mode. A user can add the following lines to his or her initialization file (identified by the `PYTHONSTARTUP` environment variable) to get automatic `Tab` completion:

    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 对象具有以下方法：

`Completer.``complete`(text, state)

  为 text 返回第 state 项补全。

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

  如果为带有句点的名称执行调用，它将尝试尽量求值直到最后一部分为止而不产生附带影响（函数不会被求值，但它可以生成对 `__getattr__()` 的调用），并通过 `dir()` 函数来匹配剩余部分。 在对表达式求值期间引发的任何异常都会被捕获、静默处理并返回 `None`。