Python の対話型プロンプトで補完機能を使う
メーリングリストに目を通していて、補完機能の存在について知りました。以下の2行でさらっと使えます。
>>> import readline, rlcompleter >>> readline.parse_and_bind('tab:complete')
例えば、リストの(特殊)メソッドを調べるには "L." の状態で TAB を2回押すと、以下のように補完候補が出力されます。
>>> L=[] >>> L. L.__add__ L.__iadd__ L.__rmul__ L.__class__ L.__imul__ L.__setattr__ L.__contains__ L.__init__ L.__setitem__ L.__delattr__ L.__iter__ L.__setslice__ L.__delitem__ L.__le__ L.__str__ L.__delslice__ L.__len__ L.append L.__doc__ L.__lt__ L.count L.__eq__ L.__mul__ L.extend L.__ge__ L.__ne__ L.index L.__getattribute__ L.__new__ L.insert L.__getitem__ L.__reduce__ L.pop L.__getslice__ L.__reduce_ex__ L.remove L.__gt__ L.__repr__ L.reverse L.__hash__ L.__reversed__ L.sort
対話型プロンプトの起動時に環境変数 PYTHONSTARTUP で定義されたスクリプトに読み込みます。従って、そのスクリプトに組み込む事で、常にこの機能を有効にすることも可能です。
$ vi ~/.bash_profile # for Python PYTHONSTARTUP=$HOME/.pythonrc.py export PYTHONSTARTUP
当初、自分で .pythonrc.py を作ろうとと調べているうちに、きれいにまとめられたサイトを発見しました。以下のサイトを紹介します。そこではファイルの補完機能も付加しています。素晴らしいです。
Interactive modeにおける補完
Interactive modeにおける補完2
リファレンス:
7.20 readline -- GNU readline のインタフェース
7.21 rlcompleter -- GNU readline向け補完関数