##
2 Tutorial

`optparse` はとても柔軟で強力でありながら、ほとんどの場合には簡単に利用 できます。この節では、`optparse` ベースのプログラムで広く使われて いるコードパターンについて述べます。

まず、`OptionParser` クラスを import しておかねばなりません。 次に、プログラムの冒頭で `OptionParser` インスタンスを生成しておきます:

    from optparse import OptionParser
    [...]
    parser = OptionParser()

これでオプションを定義できるようになりました。基本的な構文は以下の通りです:

    parser.add_option(opt_str, ...,
                      attr=value, ...)

各オプションには、`"-f"` や`"-file"` のような一つまたは複数の オプション文字列と、パーザがコマンドライン上のオプションを見つけた際に、 何を準備し、何を行うべきかを`optparse` に教えるためのオプション属性 (option attribute)がいくつか入ります。

通常、各オプションには短いオプション文字列と長いオプション文字列があります。 例えば:

    parser.add_option("-f", "--file", ...)

といった具合です。

オプション文字列は、(ゼロ文字の場合も含め)いくらでも短く、またいくらでも長く できます。ただしオプション文字列は少なくとも一つなければなりません。

`add_option()` に渡されたオプション文字列は、実際にはこの 関数で定義したオプションに対するラベルになります。簡単のため、以後では コマンドライン上でオプションを見つける という表現をしばしば使いますが、 これは実際には`optparse` がコマンドライン上のオプション文字列 を見つけ、対応づけされているオプションを捜し出す、という処理に相当します。

オプションを全て定義したら、`optparse` にコマンドラインを解析するように 指示します:

    (options, args) = parser.parse_args()

(お望みなら、`parse_args()` に自作の引数リストを渡してもかまいません。 とはいえ、実際にはそうした必要はほとんどないでしょう: `optionparser` はデフォルトで`sys.argv[1:]`を使うからです。)

`parse_args()` は二つの値を返します:

- 全てのオプションに対する値の入ったオブジェクト`options` -- 例えば、 `"-file"` が単一の文字列引数をとる場合、`options.file` は ユーザが指定したファイル名になります。オプションを指定しなかった場合には `None` になります。

- オプションの解析後に残った固定引数からなるリスト`args`。

このチュートリアルの節では、最も重要な四つのオプション属性: `action`, `type`, `dest` (destination), および `help` についてしか触れません。このうち最も重要なのは`action` です。