Python 3.10では、型ヒントにおけるUnionの使用が大幅に簡略化されました。これは、PEP 604による新機能で、X | Yの形式でUnion型を書くことが可能になりました。

Unionの古い方法

Python 3.10以前では、変数やパラメータが複数の異なる型を取り得ることを示すためには、Unionを使用する必要がありました。以下にその例を示します。

from typing import Union

rate: Union[int, str] = 1

def square(number: Union[int, float]) -> Union[int, float]:
    return number ** 2

Python 3.10の新しいUnion

Python 3.10では、Unionをインポートする必要はなくなりました。詳細はPEP 604に記載されています。このPEPでは、|演算子を使用してUnionを完全に置き換えることができます。それを行うと、上記のコードは次のようになります。

def square(number: int | float) -> int | float:
    return number ** 2

また、引数がNoneである可能性があることを示すために使用されていたOptionalも、新しい構文で置き換えることができます。

# Old syntax
from typing import Optional, Union

def f(param: Optional[int]) -> Union[float, str]:
    ...

# New syntax in 3.10
def f(param: int | None) -> float | str:
    ...

この新しい構文は、isinstance()issubclass()といった関数でも使用することができます。

>>> isinstance(1, int | str)
True

まとめ

Python言語にとって、|演算子を型ヒントで使用できるようになったことは、驚くべき新機能ではありませんが、コードがよりクリーンに見えるようになりました。インポートが少なくなり、この方法で見た目がよくなりました。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です