この例は、パターン マッチングを使用する場合に「落とし穴」として議論されています。
NOT_FOUND = 400
retcode = 200
match retcode:
case NOT_FOUND:
print('not found')
print(f'Current value of {NOT_FOUND=}')
これは、構造パターン マッチングによる偶発的なキャプチャの例です。この予期しない出力が得られます。
not found
Current value of NOT_FOUND=200
これと同じ問題が他の形で発生します。
match x:
case int():
pass
case float() | Decimal():
x = round(x)
case str:
x = int(x)
この例でstr
は、括弧が必要str()
です。それらがなければ、それは「キャプチャ」し、str組み込み型はxの値に置き換えられます。
これらの問題を回避し、早期に検出するのに役立つ防御的なプログラミング手法はありますか?