不正な引数の終了コード
次のコードを実行したときの出力として、正しいものを1つ選べ。
import argparse, io, contextlib
p = argparse.ArgumentParser()
p.add_argument("--m", choices=["a", "b"])
try:
with contextlib.redirect_stderr(io.StringIO()):
p.parse_args(["--m", "x"])
except SystemExit as e:
print(e.code)
- A
2 - B
0 - C
1 - D
None
正解と解説を見る
正解:A
argparse は、引数が不正だと、使い方とエラーを表示して、SystemExit(2) で終了する。choices で、許す値を制限できる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `import argparse, io, contextlib` | — |
| 2 | `p = argparse.ArgumentParser()` | — |
| 3 | `p.add_argument("--m", choices=["a", "b"])` | — |
| 4 | `try:` | — |
| 5 | `with contextlib.redirect_stderr(io.StringIO()…` | — |
| 6 | `p.parse_args(["--m", "x"])` | — |
| 7 | `with contextlib.redirect_stderr(io.StringIO()…` | — |
| 8 | `except SystemExit as e:` | — |
| 9 | `print(e.code)` | — |
| 分岐 | `except SystemExit as e:` | 実行される |
| 結果 | 実際の出力 | 2 |
- A
正しい。引数が不正だと、エラーメッセージを出して、終了コード 2 で終了する(
SystemExit)。 - B
誤り。0 は正常終了。
- C
誤り。argparse の引数の誤りは 2。
- D
誤り。終了コードが設定されている。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。