Python 3.10では、型アノテーションにおけるUnion型の使い方が大きく変わりました。これまでのUnion型は、複数の型を受け入れるために使用されていました。しかし、Python 3.10では、|
演算子を使用してUnion型を表現することが可能になりました。
# Python 3.10以前
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
この新しい記法の利点は、コードがより読みやすくなること、そしてtyping.Union
をインポートする必要がなくなることです。
また、この新しい記法はisinstance
やissubclass
のような型チェックで使われる場合にも利用できます。
# Python 3.10以前
print(isinstance(value, (int, str)))
# Python 3.10以降
print(isinstance(value, int | str))
この新しい記法は、Pythonの型アノテーションをより簡潔に、そして直感的に書くことを可能にします。Python 3.10のこの新機能は、Pythonの型システムをより強力で使いやすくする一歩と言えるでしょう。