Python3.10で追加された型ヒント関連機能から、 PEP 647 User-Defined Type Guards を解説します。 型の絞り込みと型ガード¶mypyなどの静的な型チェッカが型を推論する時、プログラムの処理を参考にして、可能な型の種類を絞り込んでいます。 例えば、 というプログラムでは、変数 var1 の型は、 int または None のどちらかです。var1 が int の場合は var1 + 1 を正常に計算できますが、 None の場合には None + 1 という計算になってしまうため、型チェッカはこの行をエラーとします。 しかし、このプログラムを修正して、次のように isinstance() を使って明示的に型チェックを行う処理を追加すると、None + 1 という計算が行われる可能性がなくなるため、エラーとはなりません。