###
1 callbackオプションの定義

callbackオプションを最も簡単に定義するには、 `parser.add_option()` メソッドを使います。 `action` の他に指定しなければならない属性は `callback`、 すなわちコールバックする関数自体です:

    parser.add_option("-c", action="callback", callback=my_callback)

`callback` は関数 (または呼び出し可能オブジェクト)なので、callback オプションを定義する時にはあらかじめ `my_callback()` を定義しておかねば なりません。この単純なケースでは、`optparse` は -c が 何らかの引数をとるかどうか判別できず、通常は-c が引数を 伴わないことを意味します -- 知りたいことはただ単に -c がコマンドライン上に 現れたどうかだけです。とはいえ、場合によっては、自分のコールバック関数に 任意の個数のコマンドライン引数を消費させたいこともあるでしょう。これがコールバック関数 をトリッキーなものにしています; これについてはこの節の後の方で説明します。

`optparse` は常に四つの引数をコールバックに渡し、その他には `callback_args` および `callback_kwargs` で指定した 追加引数しか渡しません。従って、最小のコールバック関数シグネチャは:

    def my_callback(option, opt, value, parser):

のようになります。

コールバックの四つの引数については後で説明します。

callback オプションを定義する場合には、他にもいくつかオプション属性を 指定できます:

`type`
  他で使われているのと同じ意味です: `store` や `append` アクションの時と同じく、 この属性は`optparse`に引数を一つ消費して、`type` に指定した 型に変換させます。`optparse` は変換後の値をどこかに保存する代わりに コールバック関数に渡します。
`nargs`
  これも他で使われているのと同じ意味です: このオプションが指定されていて、 かつ `nargs` > 1 である場合、 `optparse` は`nargs` 個の引数を消費します。このとき各引数は `type` 型に変換できねばなりません。変換後の値はタプルとしてコールバックに渡されます。
`callback_args`
  その他の固定引数からなるタプルで、コールバックに渡されます。
`callback_kwargs`
  その他のキーワード引数からなるタプルで、コールバックに渡されます。