用語集¶
このセクションでは、仕様の他の場所で使用される可能性のあるいくつかの用語を定義します。
- annotation expression¶
アノテーション内で使用することが有効な式。 これは通常、追加の type qualifiers を伴う type expression です。 詳細については、 "Type and annotation expression" を参照してください。
- assignable¶
型
Bが型Aに「代入可能」である場合、型チェッカーはx: A = bの代入でエラーを出さないようにする必要があります。ここで、bは型がBである式です。 同様に、関数呼び出しと戻り値についても同様です。f(b)では、def f(x: A): ...とdef f(...) -> A: ...内のreturn bは、BがAに代入可能である場合にのみ有効です(型エラーではありません)。 この場合、AはBから「代入可能」です。 fully static types の場合、「代入可能」は「 subtype 」と同義であり、「代入可能」は「 supertype 」と同義です。 gradual types の場合、型Bは型Aに代入可能です。AとBの完全に静的な materializationsA'とB'が存在し、B'がA'のサブタイプである場合に限ります。 詳細については、 型システムの概念 を参照してください。- consistent¶
2 つの fully static types は、 equivalent である場合、「一致」しています。 2 つの漸進的な型は、同じ型に materialize できる場合、「一致」しています。 詳細については、 型システムの概念 を参照してください。 2 つの型が一致している場合、それらは両方とも互いに assignable です。
- consistent subtype¶
「一貫したサブタイプ」は「 assignable 」と同義です(「一貫したスーパータイプ」は「代入可能」と同義です)。 詳細については、 型システムの概念 を参照してください。
- distribution¶
リリースを公開および配布するために使用されるパッケージ化されたファイル。 (PEP 426)
- equivalent¶
2 つの fully static types
AとBは、AがBの subtype であり、BがAの subtype である場合、同等です。 これは、AとBが同じセットの可能なランタイムオブジェクトを表すことを意味します。 2 つの漸進的な型AとBは、Aのすべての materializations がBの materializations でもあり、Bのすべての materializations がAの materializations でもある場合、同等です。- fully static type¶
型に gradual form が含まれていない場合、その型は「完全に静的」です。 完全に静的な型は、可能なランタイム値のセットを表します。 完全に静的な型は、 subtype 関係に参加します。 詳細については、 型システムの概念 を参照してください。
- gradual form¶
漸進的な形式は、 type expression の要素であり、それが一部である型を fully static type ではなく、可能な静的型のセットの表現にします。 詳細については、 型システムの概念 を参照してください。 主な漸進的な形式は Any です。 省略記号(
...)は、いくつかのコンテキストでは漸進的な形式です。 呼び出し可能 型で使用される場合、およびtuple[Any, ...]で使用される場合(ただし、他の tuple 型ではない場合)に漸進的な形式です。- gradual type¶
Python 型システムのすべての型は「漸進的」です。 漸進的な型は、 fully static type 、または Any 、または
Anyまたは他の gradual form を含む型である場合があります。 漸進的な型は、必ずしも単一の可能なランタイム値のセットを表すわけではありません。 代わりに、可能な静的型のセット(可能なランタイム値のセットのセット)を表すことができます。 漸進的な型は、 subtype 関係には参加しませんが、 consistency および assignability には参加します。 それらは、より静的な、または完全に静的な型に materialized することができます。 詳細については、 型システムの概念 を参照してください。- inline¶
インライン型アノテーションは、 PEP 526 および PEP 3107 構文を使用してランタイムコードに含まれるアノテーションです(ファイル名は
.pyで終わります)。- materialize¶
gradual type は、 Any を他の任意の型に置き換えるか、 呼び出し可能 型の ... を型のリストに置き換えるか、
tuple[Any, ...]を特定の長さのタプル型に置き換えることにより、より静的な型(おそらく fully static type )に materialized できます。 この materialization 関係は、漸進的な型の assignability を定義するための鍵です。 詳細については、 型システムの概念 を参照してください。- module¶
Python ランタイムコードまたはスタブ型情報を含むファイル。
- narrow¶
fully static type
Bは、BがAの subtype であり、BがAと equivalent ではない場合、完全に静的な型Aよりも狭いです。 これは、BがAによって表される可能なオブジェクトの適切なサブセットを表すことを意味します。 「型の絞り込み」とは、型チェッカーが、代入またはランタイムチェックの値のために、制御フローの一部の場所で名前または式がより狭い型を持たなければならないと推測することです。- nominal¶
名目型(例:クラス名)は、その型の
__class__またはそのサブクラスのいずれかのサブクラスの値のセットを表します。 対照的に、 structural 型を参照してください。- package¶
Python モジュールに名前空間を提供するディレクトリまたはディレクトリ。 (パッケージと distributions の違いに注意してください。ほとんどのディストリビューションはインストールする 1 つのパッケージにちなんで名付けられていますが、一部のディストリビューションは複数のパッケージをインストールします。)
- special form¶
特殊形式は、型システム内で特別な意味を持つオブジェクトであり、言語文法のキーワードに匹敵します。 例としては、
Any、Generic、Literal、およびTypedDictがあります。 特殊形式は、 type expressions 内で使用できる場合がありますが、常にではありません。 特殊形式は通常、typingモジュールまたは同等のtyping_extensionsからインポートできますが、一部の特殊形式は他のモジュールに配置されています。- structural¶
構造型(例: プロトコル 、 TypedDict )は、
__class__ではなく、プロパティ(例:属性、メソッド、辞書のキー/値の型)によって値のセットを定義します。 呼び出し可能 型も構造的です。 呼び出し可能な型は、サブクラス関係ではなく、シグネチャに基づいて他の呼び出し可能な型のサブタイプです。 対照的に、 nominal 型を参照してください。- stub¶
ランタイムコードが含まれていない型情報のみを含むファイル(ファイル名は
.pyiで終わります)。 詳細については、 スタブファイル を参照してください。- subtype¶
fully static type
Bは、Bによって表される可能なランタイム値のセットがAによって表される可能なランタイム値のセットのサブセットである場合にのみ、完全に静的な型Aのサブタイプです。 nominal 型(クラス)の場合、サブタイプは継承によって定義されます。 structural 型の場合、サブタイプは共有される属性/メソッドまたはキーのセットによって定義されます。 サブタイプは supertype の逆です。 完全に静的ではない型は、他の型のサブタイプまたはスーパータイプではありませんが、 materialization を介して他の型に assignable できます。 詳細については、 型システムの概念 を参照してください。- supertype¶
fully static type
Aは、Aによって表される可能なランタイム値のセットがBによって表される可能なランタイム値のセットのスーパーセットである場合にのみ、完全に静的な型Bのスーパータイプです。 スーパータイプは subtype の逆です。 詳細については、 型システムの概念 を参照してください。- type expression¶
型を表す式。 型システムは、 annotation expression 内および他のいくつかのコンテキストで型式の使用を要求します。 詳細については、 "Type and annotation expression" を参照してください。
- type qualifier¶
型修飾子は、 special form であり、 type expression を修飾して annotation expression を形成します。 たとえば、型修飾子 Final は、注釈付きの値がオーバーライドまたは変更されないことを示すために型の周りに使用できます。 この用語は、 @final デコレータなど、異なる構文コンテキストを使用して型を変更する他の特殊形式にも使用されます。
- wide¶
fully static type
Aは、BがAの subtype であり、BがAと equivalent ではない場合にのみ、完全に静的な型Bよりも広いです。 これは、AがBによって表される可能な値の適切なスーパーセットを表すことを意味します。 また、 "narrow" も参照してください。