上記の例は全て、何らかのコマンドラインオプションが見つかった時に
何らかの変数 (保存先: destination) に値を設定していました。
では、該当するオプションが見つからなかった場合には何が起きるのでしょうか?
デフォルトは全く与えていないため、これらの値は全て None
になります。
たいていはこれで十分ですが、もっときちんと制御したい場合もあります。
optparse では各保存先に対してデフォルト値を指定し、コマンドライン
の解析前にデフォルト値が設定されるようにできます。
まず、 verbose/quiet の例について考えてみましょう。optparse に
対して、"-q"
がない限り verbose
を True
に設定
させたいなら、以下のようにします:
parser.add_option("-v", action="store_true", dest="verbose", default=True) parser.add_option("-q", action="store_false", dest="verbose")
デフォルトの値は特定のオプションではなく 保存先 に対して適用されます。 また、これら二つのオプションはたまたま同じ保存先を持っているにすぎないため、 上のコードは下のコードと全く等価になります:
parser.add_option("-v", action="store_true", dest="verbose") parser.add_option("-q", action="store_false", dest="verbose", default=True)
下のような場合を考えてみましょう:
parser.add_option("-v", action="store_true", dest="verbose", default=False) parser.add_option("-q", action="store_false", dest="verbose", default=True)
やはりverbose
のデフォルト値は True
になります;
特定の目的変数に対するデフォルト値として有効なのは、最後に指定した値だからです。
デフォルト値をすっきりと指定するには、OptionParser の set_defaults() メソッドを使います。このメソッドは parse_args() を呼び出す前ならいつでも使えます:
parser.set_defaults(verbose=True) parser.add_option(...) (options, args) = parser.parse_args()
前の例と同様、あるオプションの値の保存先に対するデフォルトの値は最後に指定した 値になります。コードを読みやすくするため、デフォルト値を設定するときには両方のやり方 を混ぜるのではなく、片方だけを使うようにしましょう。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。