Python 3.12から導入されたPEP695により、型ヒントのための新しい構文が追加されました。これにより、ジェネリクスや型変数の定義方法が大きく変わりました。

型引数構文の導入

Python 3.5で導入された型ヒントは、ジェネリクスを用いることで表現力を豊かにすることができます。しかし、それを行うにはtypingからGenericTypeVarなどをインポートしてそれを継承してジェネリクスを定義する必要がありました。

PEP695では、他の現代的なプログラミング言語にあるのと同等の構文を用いて、ジェネリクスやパラメータ型を表現できるようになりました。

型エイリアス

型エイリアスは、複雑な型シグネチャを簡素化するために役立ちます。例えば、次のように定義できます。

from collections.abc import Sequence

type ConnectionOptions = dict[str, str]
type Address = tuple[str, int]
type Server = tuple[Address, ConnectionOptions]

def broadcast_message(message: str, servers: Sequence[Server]) -> None:
    ...

この型シグネチャは、次の型シグネチャと完全に等価です。

def broadcast_message(
    message: str,
    servers: Sequence[tuple[tuple[str, int], dict[str, str]]]
) -> None:
    ...

NewType

NewTypeヘルパーを使用して、異なる型を作成することができます。

from typing import NewType

UserId = NewType('UserId', int)
some_id = UserId(524313)

以上、Python 3.12の新機能である型引数構文について簡単に説明しました。詳細については、公式ドキュメンテーションやPEP695をご覧ください。

投稿者 admin

コメントを残す

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