同じ警告の表示回数
次のコードを実行したときの出力として、正しいものを1つ選べ。
import warnings
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("once")
for _ in range(3):
warnings.warn("x")
print(len(w))
- A
1 - B
3 - C
0 - D
2
正解と解説を見る
正解:A
フィルタのアクションは、default(場所ごとに 1 回)・always・once(全体で 1 回)・ignore・error・module。ループの中の警告が、何度も表示されるのを避けられる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `import warnings` | — |
| 2 | `with warnings.catch_warnings(record=True) as …` | w = [] |
| 3 | `warnings.simplefilter("once")` | — |
| 4 | `for _ in range(3):` | — |
| 5 | `warnings.warn("x")` | — |
| 6 | `for _ in range(3):` | — |
| 7 | `warnings.warn("x")` | — |
| 8 | `for _ in range(3):` | — |
| 9 | `warnings.warn("x")` | — |
| 10 | `for _ in range(3):` | — |
| 11 | `with warnings.catch_warnings(record=True) as …` | w = [<WarningMessage {message : UserWarning… |
| 12 | `print(len(w))` | w = [<WarningMessage {message : UserWarning… |
| 結果 | 実際の出力 | 1 |
- A
正しい。フィルタ
onceは、同じ警告を、最初の 1 回だけ表示(記録)する。 - B
誤り。
onceで、1 回にまとめられる。 - C
誤り。最初の 1 回は記録される。
- D
誤り。1 回だけ。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。