LoginSignup
1
3

More than 3 years have passed since last update.

PEP 604 (Complementary syntax for Union[]) を読んだよメモ

Posted at

Microsoft の Python 向け型チェッカーの pyright が最新の仕様に対応していると聞いて README を流し読みしていたら、今までウォッチしていなかった PEP 604 (Complementary syntax for Union[]) というのがリストアップされていたので目を通してみました。
ちなみに次の記事で PEP-612 についても書く予定です。

概要

  • 毎回 Union[int, str] って書くのうざくない?
  • Scala みたいに int | str って書けるようにしようよ
  • 型アノテーションだけじゃなくて、 isinstance()issubclass() でも使えるようにしようよ

アプローチ

  • 型同士を | でつなぐと型集合をつくれるようにする

以上。

PEP にあるサンプルを見ると一目瞭然なので説明は省きます。

# in place of
# def f(list: List[Union[int, str]], param: Optional[int]) -> Union[float, str]
def f(list: List[int | str], param: int | None) -> float | str:
    pass

f([1, "abc"], None)

assert str | int == Union[str,int]
assert str | int | float == Union[str, int, float]

assert isinstance("", int | str)
assert issubclass(bool, int | float)

感想

  • 正直な感想としてキモい…
  • Scala で見かけるとあんまり違和感はないのに、Python として見るとなんだかゾワゾワするのは単に慣れていないだけだろうか
  • Union を書くのは楽になるけど List[int | str] を書くのにはあまりメリットないですね…
  • まだ Draft なので採用は決まってません
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3