# 16.9. `rlcompleter` --- GNU readline向け補完関数

ソースコード: Lib/rlcompleter.py

`rlcompleter` モジュールではPythonの識別子やキーワードを定義した `readline` モジュール向けの補完関数を定義しています。

このモジュールが Unixプラットフォームでimportされ、 `readline` が利用できるときには、 `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オブジェクトは以下のメソッドを持っています:

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

  text の state 番目の補完候補を返します。

  もし text がピリオド(`'.'`)を含まない場合、 `__main__` 、 `__builtin__` で定義されている名前か、キーワード (`keyword` モジュールで定義されている) から補完されます。

  ピリオドを含む名前の場合、副作用を出さずに名前を最後まで評価しようとします(関数を明示的に呼び出しはしませんが、 `__getattr__()` を呼んでしまうことはあります)そして、 `dir()` 関数でマッチする語を見つけます。式を評価中に発生した全ての例外は補足して無視され、 `None` を返します。