Python 3.10では、型ヒントの書き方に大きな変更がありました。特にUnion
の書き方が大きく変わり、より簡潔で直感的になりました。
Unionの新しい書き方
Python 3.10以降、Union
をインポートする必要はなくなりました。これはPEP 604の一部で、Union
を完全に|
演算子に置き換えることができます。
例えば、以前は以下のように書いていました:
from typing import Union
def square(number: Union[int, float]) -> Union[int, float]:
return number ** 2
しかし、Python 3.10では以下のように書けます:
def square(number: int | float) -> int | float:
return number ** 2
Optionalの新しい書き方
また、引数が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()
やissubclass()
でも使えます。
>>> isinstance(1, int | str)
True
この新しい書き方はPython言語にとって驚くべき新機能ではありませんが、型注釈を使用する際に|
演算子を使用することでコードが見やすくなります。これにより、必要なインポートが減り、見た目が良くなります。