Python 3.10では、型ヒントにおけるUnionの表現が大幅に簡素化されました。これはPEP 604によって導入された新機能で、従来のUnion
を|
演算子で置き換えることが可能になりました。
従来のUnionの使用方法
Python 3.10以前では、変数やパラメータが複数の異なる型を取り得る場合、Union
を使用して表現していました。
from typing import Union
rate: Union[int, str] = 1
また、引数がNone
または他の型の値を取る場合は、Optional
を使用していました。
from typing import Optional
def f(param: Optional[int]) -> Union[float, str]:
...
Python 3.10の新しいUnion構文
Python 3.10では、Union
やOptional
のインポートが不要になり、|
演算子を使用して型ヒントを表現できるようになりました。
def f(param: int | None) -> float | str:
...
この新しい構文は、isinstance()
やissubclass()
でも使用できます。
isinstance(1, int | str) # True
この新しい機能はPython言語にとって驚くべき新機能ではありませんが、型注釈を使用する際にコードがクリーナーに見え、インポートが少なくなり、この方法で見た目が良くなります。
まとめ
Python 3.10の新しいUnion構文は、型ヒントをより簡単に書くことができ、コードがすっきりと見えるようになりました。これにより、Pythonの型ヒントはより使いやすく、読みやすくなりました。これからPython 3.10を使う方々にとって、この新機能は大いに役立つことでしょう。