まずは用語の定義を行う必要があります。
sys.argv[1:]
の要素となります。
(sys.argv[0]
は実行しようとしているプログラムの名前です。
引数解析に関しては、この要素はあまり重要ではありません。)
Unix シェルでは、 ``語 (word)'' という用語も使います。
場合によっては sys.argv[1:]
以外の引数リストを代入する方が
望ましいことがあるので、``引数'' は ``sys.argv[1:]
または
sys.argv[1:]
の代替として提供される別のリストの要素''
と読解するべきでしょう。
他に見られる他のオプション書法には以下のようなものがあります:
これらのオプション書法は optparse ではサポートされておらず、 将来にわたってサポートされることもありません。 (これらのオプション 書法のいずれかを本当に使いたいのなら、 OptionParser をサブクラス化 して、難解な部分を全て上書きしなければならないでしょう。しかし できればやめてください! optparse は熟慮の上で伝統的な Unix/GNU 的書法を採っています; 最初の 3 つの書法は場所によっては非標準 ですし、最後の書法は MS-DOS/Windows かつ/または VMS をターゲットに しているときしか意味をなしません。)
["-f", "foo"]
は以下の引数:
["-ffoo"]
と等価なことがあります。(optparse ではこの書法をサポート しています)
あるオプションは引数をとることがなく、またあるオプションは 常に引数をとります。多くの人々が ``オプションのオプション引数'' 機能を欲しています。これ、あるオプションについては引数 が存在するときだけ引数をとり、そうでないときには引数をとらない ようにするという機能です。この機能は引数解析をあいまいにするため、 議論の的となる点です: 例えば、もし -a がオプション引数を とり、-b がまったく別のオプションだとしたら、 -ab をどうやって解析すればいいのでしょうか? optparse は今のところこの機能をサポートしていません。
例えば、以下のような架空のコマンドラインを考えてみてください:
prog -v --report /tmp/report.txt foo bar
-v と --report は両方ともオプションです。 --report が引数を一つとると仮定すると、 ``/tmp/report.txt'' はオプション引数です。 ``foo'' および ``bar'' は固定引数です。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。