警告の捕捉
次のコードを実行したときの出力として、正しいものを1つ選べ。
import warnings
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
warnings.warn("x", DeprecationWarning)
print(len(w), w[0].category.__name__)
- A
0 DeprecationWarning - B
1 UserWarning - C
1 DeprecationWarning - D
DeprecationWarningが例外として発生する。
正解と解説を見る
正解:C
warnings.warn は警告を発生させる。catch_warnings(record=True) で記録して調べられる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `import warnings` | — |
| 2 | `with warnings.catch_warnings(record=True) as …` | w = [] |
| 3 | `warnings.simplefilter("always")` | — |
| 4 | `warnings.warn("x", DeprecationWarning)` | — |
| 5 | `with warnings.catch_warnings(record=True) as …` | w = [<WarningMessage {message : Deprecation… |
| 6 | `print(len(w), w[0].category.__name__)` | w = [<WarningMessage {message : Deprecation… |
| 結果 | 実際の出力 | 1 DeprecationWarning |
- A
誤り。警告は 1 件記録される。
- B
誤り。
DeprecationWarningを指定している。 - C
正しい。
record=Trueで警告が記録され、simplefilter("always")で常に発生する。 - D
誤り。警告は例外にならず、記録される。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。