用語集—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.10/glossary
移動先:案内検索

用語集

>>>

インタラクティブシェルのデフォルトのPythonプロンプト。 インタプリタでインタラクティブに実行できるコード例でよく見られます。

...

参照できます:

  • インデントされたコードブロックのコードを入力するとき、一致する左右の区切り文字(括弧、角括弧、中括弧、または三重引用符)のペア内にあるとき、またはデコレータを指定した後の、インタラクティブシェルのデフォルトのPythonプロンプト。

  • Ellipsis 組み込み定数。

2to3

ソースを解析し、解析ツリーをトラバースすることで検出できるほとんどの非互換性を処理することにより、Python2.xコードをPython3.xコードに変換しようとするツール。

2to3は、 lib2to3 として標準ライブラリで利用できます。 スタンドアロンのエントリポイントは、Tools/scripts/2to3として提供されます。 2to3-自動化されたPython2から3へのコード変換を参照してください。

抽象基本クラス

抽象基本クラスは、 hasattr()のような他の手法が不器用または微妙に間違っている場合(たとえば、マジックメソッド)にインターフェイスを定義する方法を提供することにより、ダックタイピングを補完します。 ])。 ABCは仮想サブクラスを導入します。これは、クラスから継承しないが、 isinstance()および issubclass()によって認識されるクラスです。 abc モジュールのドキュメントを参照してください。 Pythonには、データ構造( collections.abc モジュール内)、数値(数値モジュール内)、ストリーム( io 内)用の多くの組み込みABCが付属しています。 ]モジュール)、ファインダーとローダーをインポートします( importlib.abc モジュール内)。 abc モジュールを使用して、独自のABCを作成できます。

注釈

タイプヒントとして慣例により使用される、変数、クラス属性、または関数パラメーターまたは戻り値に関連付けられたラベル。

ローカル変数のアノテーションは実行時にアクセスできませんが、グローバル変数、クラス属性、および関数のアノテーションは、それぞれモジュール、クラス、および関数の__annotations__特殊属性に格納されます。

変数アノテーション関数アノテーション PEP 484 PEP 526 を参照してください。この機能について説明します。 アノテーションの操作に関するベストプラクティスについては、アノテーションのベストプラクティスも参照してください。

口論

関数を呼び出すときに関数(またはメソッド)に渡される値。 議論には2種類あります。

  • キーワード引数:識別子が前に付いた引数(例: name=)関数呼び出しで、または**が前に付いたディクショナリの値として渡されます。 たとえば、35はどちらも、 complex()への次の呼び出しのキーワード引数です。

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})
  • 位置引数:キーワード引数ではない引数。 位置引数は、引数リストの先頭に表示することも、 iterable の前に*を付ける要素として渡すこともできます。 たとえば、35はどちらも、次の呼び出しの位置引数です。

    complex(3, 5)
    complex(*(3, 5))

引数は、関数本体の名前付きローカル変数に割り当てられます。 この割り当てを管理するルールについては、呼び出しセクションを参照してください。 構文的には、任意の式を使用して引数を表すことができます。 評価された値はローカル変数に割り当てられます。

パラメータの用語集エントリ、引数とパラメータの違いに関するFAQの質問、および PEP 362 も参照してください。

非同期コンテキストマネージャー

__aenter__()および__aexit__()メソッドを定義することにより、 async with ステートメントで見られる環境を制御するオブジェクト。 PEP 492 によって導入されました。

非同期発電機

非同期ジェネレータイテレータを返す関数。 async for ループで使用可能な一連の値を生成するための yield 式が含まれていることを除けば、 async def で定義されたコルーチン関数のように見えます。

通常は非同期ジェネレーター関数を指しますが、状況によっては非同期ジェネレーターイテレーターを指す場合があります。 意図した意味が明確でない場合は、完全な用語を使用することであいまいさを回避できます。

非同期ジェネレーター関数には、 await 式、 async for 、および async with ステートメントが含まれる場合があります。

非同期ジェネレータイテレータ

非同期ジェネレーター関数によって作成されたオブジェクト。

これは非同期イテレータであり、__anext__()メソッドを使用して呼び出されると、次の yield 式まで非同期ジェネレータ関数の本体を実行する待機可能なオブジェクトを返します。

yield は、ロケーションの実行状態(ローカル変数と保留中のtryステートメントを含む)を記憶して、処理を一時的に中断します。 非同期ジェネレータイテレータが、__anext__()によって返される別の待機可能な状態で効果的に再開すると、中断したところから再開します。 PEP 492 および PEP 525 を参照してください。

非同期反復可能

async for ステートメントで使用できるオブジェクト。 __aiter__()メソッドから非同期イテレータを返す必要があります。 PEP 492 によって導入されました。

非同期イテレータ

__aiter__()および__anext__()メソッドを実装するオブジェクト。 __anext__は、 awaitable オブジェクトを返す必要があります。 async for は、 StopAsyncIteration 例外が発生するまで、非同期イテレーターの__anext__()メソッドによって返される待機可能オブジェクトを解決します。 PEP 492 によって導入されました。

属性

点線の式を使用して名前で参照されるオブジェクトに関連付けられた値。 たとえば、オブジェクト o に属性 a がある場合、 oa として参照されます。

待てます

await 式で使用できるオブジェクト。 コルーチンまたは__await__()メソッドを持つオブジェクトにすることができます。 PEP 492 も参照してください。

BDFL

人生のための慈悲深い独裁者、別名 Guido van Rossum 、Pythonの作成者。

バイナリーファイル

ファイルオブジェクトは、バイトのようなオブジェクトの読み取りと書き込みが可能です。 バイナリファイルの例としては、バイナリモードで開かれたファイル('rb''wb'または'rb+')、sys.stdin.buffersys.stdout.buffer、および io.BytesIO および gzip.GzipFile

str オブジェクトの読み取りと書き込みが可能なファイルオブジェクトについては、テキストファイルも参照してください。

借用参照

PythonのCAPIでは、借用された参照はオブジェクトへの参照です。 オブジェクト参照カウントは変更されません。 オブジェクトが破壊されると、ダングリングポインタになります。 たとえば、ガベージコレクションは、オブジェクトへの最後の強力な参照を削除して、オブジェクトを破棄できます。

借用参照Py_INCREF()を呼び出して、強力な参照にインプレースで変換することをお勧めします。ただし、最後に使用する前にオブジェクトを破棄できない場合を除きます。借用した参照の。 Py_NewRef()関数を使用して、新しい強力な参照を作成できます。

バイトのようなオブジェクト

バッファプロトコルをサポートし、C- 連続バッファをエクスポートできるオブジェクト。 これには、すべての bytesbytearrayarray.array オブジェクト、および多くの一般的な memoryview オブジェクトが含まれます。 バイトのようなオブジェクトは、バイナリデータを処理するさまざまな操作に使用できます。 これらには、圧縮、バイナリファイルへの保存、およびソケットを介した送信が含まれます。

一部の操作では、バイナリデータを変更可能にする必要があります。 ドキュメントでは、これらを「読み取り/書き込みバイトのようなオブジェクト」と呼ぶことがよくあります。 可変バッファオブジェクトの例には、 bytearray および bytearraymemoryview が含まれます。 他の操作では、バイナリデータを不変オブジェクト(「読み取り専用バイトのようなオブジェクト」)に格納する必要があります。 これらの例には、 bytes および bytes オブジェクトの memoryview が含まれます。

バイトコード

Pythonソースコードは、CPythonインタープリターでのPythonプログラムの内部表現であるバイトコードにコンパイルされます。 バイトコードは.pycファイルにもキャッシュされるため、同じファイルの2回目の実行が高速になります(ソースからバイトコードへの再コンパイルを回避できます)。 この「中間言語」は、各バイトコードに対応するマシンコードを実行する仮想マシン上で実行されると言われています。 バイトコードは、異なるPython仮想マシン間で機能したり、Pythonリリース間で安定したりすることは期待されていないことに注意してください。

バイトコード命令のリストは、 disモジュールのドキュメントにあります。

折り返し電話

将来のある時点で実行される引数として渡されるサブルーチン関数。

クラス

ユーザー定義オブジェクトを作成するためのテンプレート。 クラス定義には通常、クラスのインスタンスを操作するメソッド定義が含まれています。

クラス変数

クラスで定義され、クラスレベルでのみ変更されることを目的とした変数(つまり、クラスのインスタンスでは変更されない)。

強制

同じタイプの2つの引数を含む操作中に、あるタイプのインスタンスを別のタイプに暗黙的に変換します。 たとえば、int(3.15)は浮動小数点数を整数3に変換しますが、3+4.5では、各引数は異なる型(1つのint、1つのfloat)であり、両方追加する前に同じ型に変換する必要があります。そうしないと、 TypeError が発生します。 強制がなければ、互換性のある型のすべての引数でさえ、プログラマーが同じ値に正規化する必要があります。たとえば、3+4.5だけでなく、float(3)+4.5です。

複素数

すべての数が実数部と虚数部の合計として表される、おなじみの実数システムの拡張。 虚数は虚数単位(-1の平方根)の実数倍であり、数学ではi、工学ではjと書かれることがよくあります。 Pythonには、この後者の表記法で記述された複素数のサポートが組み込まれています。 虚数部は、jサフィックスで記述されます(例:3+1j)。 math モジュールに相当する複雑なものにアクセスするには、 cmath を使用します。 複素数の使用は、かなり高度な数学的機能です。 それらの必要性に気付いていない場合は、それらを安全に無視できることはほぼ確実です。

コンテキストマネージャー

__enter__()および__exit__()メソッドを定義することにより、 with ステートメントに表示される環境を制御するオブジェクト。 PEP 343 を参照してください。

コンテキスト変数

コンテキストに応じて異なる値を持つことができる変数。 これは、各実行スレッドが変数に対して異なる値を持つ可能性があるスレッドローカルストレージに似ています。 ただし、コンテキスト変数の場合、1つの実行スレッドに複数のコンテキストが存在する可能性があり、コンテキスト変数の主な用途は、同時非同期タスクの変数を追跡することです。 contextvars を参照してください。

隣接

C-contiguous または Fortran contiguous のいずれかである場合、バッファーは正確に連続していると見なされます。 ゼロ次元バッファーはCとFortranに隣接しています。 1次元配列では、インデックスをゼロから昇順に並べて、アイテムをメモリ内に並べて配置する必要があります。 多次元C連続配列では、メモリアドレスの順にアイテムにアクセスすると、最後のインデックスが最も速く変化します。 ただし、Fortranの連続配列では、最初のインデックスが最も速く変化します。

コルーチン

コルーチンは、より一般化された形式のサブルーチンです。 サブルーチンは、あるポイントで入力され、別のポイントで終了します。 コルーチンは、さまざまなポイントで開始、終了、再開できます。 これらは、 async def ステートメントで実装できます。 PEP 492 も参照してください。

コルーチン関数

コルーチンオブジェクトを返す関数。 コルーチン関数は、 async def ステートメントで定義でき、 awaitasync for 、および async with キーワードを含めることができます。 これらは PEP 492 によって導入されました。

CPython

python.org で配布されているPythonプログラミング言語の正規の実装。 「CPython」という用語は、この実装をJythonやIronPythonなどの他の実装と区別するために必要な場合に使用されます。

デコレータ

別の関数を返す関数。通常、@wrapper構文を使用した関数変換として適用されます。 デコレータの一般的な例は、 classmethod()および staticmethod()です。

デコレータ構文は単なるシンタックスシュガーであり、次の2つの関数定義は意味的に同等です。

def f(...):
    ...
f = staticmethod(f)

@staticmethod
def f(...):
    ...

同じ概念がクラスにも存在しますが、そこではあまり一般的に使用されていません。 デコレータの詳細については、関数定義およびクラス定義のドキュメントを参照してください。

ディスクリプタ

メソッド__get__()__set__()、または__delete__()を定義するオブジェクト。 クラス属性が記述子である場合、その特別なバインディング動作は属性ルックアップ時にトリガーされます。 通常、 ab を使用して属性を取得、設定、または削除すると、 a のクラスディクショナリで b という名前のオブジェクトが検索されますが、 b [ X153X]は記述子であり、それぞれの記述子メソッドが呼び出されます。 記述子を理解することは、Pythonを深く理解するための鍵です。これは、記述子が関数、メソッド、プロパティ、クラスメソッド、静的メソッド、スーパークラスへの参照などの多くの機能の基礎であるためです。

記述子のメソッドの詳細については、記述子の実装または記述子のハウツーガイドを参照してください。

辞書

任意のキーが値にマップされる連想配列。 キーは、__hash__()および__eq__()メソッドを持つ任意のオブジェクトにすることができます。 Perlでハッシュと呼ばれます。

辞書の理解

iterable内の要素のすべてまたは一部を処理し、結果を含む辞書を返すコンパクトな方法。 results = {n: n ** 2 for n in range(10)}は、値n ** 2にマップされたキーnを含む辞書を生成します。 リスト、セット、辞書については、ディスプレイを参照してください。

辞書ビュー

dict.keys()dict.values()、および dict.items()から返されるオブジェクトは、ディクショナリビューと呼ばれます。 これらは、ディクショナリのエントリに関する動的なビューを提供します。つまり、ディクショナリが変更されると、ビューはこれらの変更を反映します。 辞書ビューを強制的に完全なリストにするには、list(dictview)を使用します。 ディクショナリビューオブジェクトを参照してください。

docstring

クラス、関数、またはモジュールの最初の式として表示される文字列リテラル。 スイートの実行時には無視されますが、コンパイラによって認識され、囲んでいるクラス、関数、またはモジュールの__doc__属性に配置されます。 イントロスペクションを介して利用できるため、オブジェクトを文書化するための標準的な場所です。

ダックタイピング

オブジェクトのタイプを調べて、適切なインターフェイスがあるかどうかを判断しないプログラミングスタイル。 代わりに、メソッドまたは属性は単に呼び出されるか使用されます(「アヒルのように見え、アヒルのようにクワクワクする場合は、アヒルである必要があります。」)特定のタイプではなくインターフェイスを強調することにより、適切に設計されたコードは、多形置換。 ダックタイピングは、 type()または isinstance()を使用したテストを回避します。 (ただし、ダックタイピングは抽象基本クラスで補完できることに注意してください。)代わりに、通常は hasattr()テストまたは EAFP プログラミングを使用します。

EAFP

許可よりも許しを求める方が簡単です。 この一般的なPythonコーディングスタイルは、有効なキーまたは属性の存在を前提としており、その想定が誤りであることが判明した場合は例外をキャッチします。 このクリーンで高速なスタイルは、 try および except ステートメントが多数存在することを特徴としています。 この手法は、Cなどの他の多くの言語に共通する LBYL スタイルとは対照的です。

表現

ある値に評価できる構文の一部。 言い換えると、式は、リテラル、名前、属性アクセス、演算子、関数呼び出しなど、すべて値を返す式要素の累積です。 他の多くの言語とは対照的に、すべての言語構造が式であるとは限りません。 while のように、式として使用できないステートメントもあります。 割り当てもステートメントであり、式ではありません。

拡張モジュール

PythonのCAPIを使用してコアおよびユーザーコードと対話する、CまたはC ++で記述されたモジュール。

f-文字列

'f'または'F'で始まる文字列リテラルは、一般に「f-strings」と呼ばれ、形式の文字列リテラルの略です。 PEP 498 も参照してください。

ファイルオブジェクト

ファイル指向のAPI(read()write()などのメソッドを使用)を基盤となるリソースに公開するオブジェクト。 ファイルオブジェクトは、作成方法に応じて、実際のディスク上のファイル、または別の種類のストレージや通信デバイス(たとえば、標準の入出力、メモリ内のバッファ、ソケット、パイプなど)へのアクセスを仲介できます。 。 ファイルオブジェクトは、ファイルのようなオブジェクトまたはストリームとも呼ばれます。

実際には、ファイルオブジェクトには、生のバイナリファイル、バッファリングされたバイナリファイルテキストファイルの3つのカテゴリがあります。 それらのインターフェースは io モジュールで定義されています。 ファイルオブジェクトを作成する標準的な方法は、 open()関数を使用することです。

ファイルのようなオブジェクト

ファイルオブジェクトの同義語。

ファイルシステムのエンコーディングとエラーハンドラ

Pythonがオペレーティングシステムからバイトをデコードし、Unicodeをオペレーティングシステムにエンコードするために使用するエンコードとエラーハンドラー。

ファイルシステムエンコーディングは、128未満のすべてのバイトを正常にデコードすることを保証する必要があります。 ファイルシステムエンコーディングがこの保証を提供できない場合、API関数は UnicodeError を発生させる可能性があります。

sys.getfilesystemencoding()および sys.getfilesystemencodeerrors()関数を使用して、ファイルシステムエンコーディングおよびエラーハンドラーを取得できます。

ファイルシステムエンコーディングとエラーハンドラーは、Pythonの起動時にPyConfig_Read()関数によって構成されます。 PyConfig [の filesystem_encoding および filesystem_errors メンバーを参照してください。 X198X]。

ロケールエンコーディングも参照してください。

ファインダ

インポートされているモジュールのローダーを見つけようとするオブジェクト。

Python 3.3以降、ファインダーには2つのタイプがあります。 sys.meta_path で使用するメタパスファインダーsysで使用するパスエントリファインダーです。 .path_hooks 。

詳細については、 PEP 302 PEP 420 、および PEP 451 を参照してください。

フロア分割

最も近い整数に切り捨てる数学的な除算。 床分割演算子は//です。 たとえば、式11 // 4は、floatの真の除算によって返される2.75とは対照的に、2と評価されます。 (-11) // 4-3であることに注意してください。これは、-2.75下向きに丸められているためです。 PEP 238 を参照してください。

関数

呼び出し元に何らかの値を返す一連のステートメント。 また、本体の実行に使用できる0個以上の引数を渡すこともできます。 パラメーターメソッド、および関数定義セクションも参照してください。

関数アノテーション

関数パラメーターまたは戻り値の注釈

関数アノテーションは通常、タイプヒントに使用されます。たとえば、この関数は2つの int 引数を取り、 int 戻り値を持つことが期待されます。

def sum_two_numbers(a: int, b: int) -> int:
   return a + b

関数アノテーションの構文は、セクション関数定義で説明されています。

この機能について説明している変数アノテーションおよび PEP 484 を参照してください。 アノテーションの操作に関するベストプラクティスについては、アノテーションのベストプラクティスも参照してください。

__将来__

将来のステートメントfrom __future__ import <feature>は、Pythonの将来のリリースで標準となる構文またはセマンティクスを使用して、現在のモジュールをコンパイルするようにコンパイラーに指示します。 __ future __ モジュールは、 feature の可能な値を文書化します。 このモジュールをインポートしてその変数を評価することにより、新しい機能が最初に言語に追加されたのはいつか、デフォルトになるのはいつか(または追加されたのか)を確認できます。

>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
ガベージコレクション

使用されなくなったときにメモリを解放するプロセス。 Pythonは、参照カウントと、参照サイクルを検出して中断できる循環ガベージコレクターを介してガベージコレクションを実行します。 ガベージコレクタは、 gc モジュールを使用して制御できます。

ジェネレーター

ジェネレータイテレータを返す関数。 forループで使用できる一連の値を生成するための yield 式が含まれていること、または next()で一度に1つずつ取得できることを除けば、通常の関数のように見えます。関数。

通常はジェネレーター関数を指しますが、状況によってはジェネレーターイテレーターを指す場合もあります。 意図した意味が明確でない場合は、完全な用語を使用することであいまいさを回避できます。

ジェネレータイテレータ

ジェネレーター関数によって作成されたオブジェクト。

yield は、ロケーションの実行状態(ローカル変数と保留中のtryステートメントを含む)を記憶して、処理を一時的に中断します。 ジェネレーターイテレーターが再開すると、中断したところから再開します(呼び出しごとに新しく開始する関数とは対照的です)。

ジェネレータ式

イテレータを返す式。 通常の式の後に、ループ変数、範囲を定義するfor句、およびオプションのif句が続くように見えます。 結合された式は、囲んでいる関数の値を生成します。

>>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
285
ジェネリック関数

異なるタイプに対して同じ操作を実装する複数の関数で構成される関数。 呼び出し中にどの実装を使用するかは、ディスパッチアルゴリズムによって決定されます。

シングルディスパッチ用語集エントリ、 functools.singledispatch()デコレータ、および PEP 443 も参照してください。

ジェネリック型

パラメータ化できるタイプ。 通常、 list のようなコンテナ。 タイプヒントおよび注釈に使用されます。

詳細については、 PEP 483 を参照してください。使用方法については、タイピングまたは汎用エイリアスタイプを参照してください。

GIL

グローバルインタプリタロックを参照してください。

グローバルインタプリタロック

CPython インタープリターが使用するメカニズムで、一度に1つのスレッドのみがPython バイトコードを実行することを保証します。 これにより、オブジェクトモデル( dict などの重要な組み込み型を含む)が同時アクセスに対して暗黙的に安全になるため、CPythonの実装が簡素化されます。 インタプリタ全体をロックすると、マルチプロセッサマシンによって提供される並列処理の多くが犠牲になりますが、インタプリタをマルチスレッド化するのが容易になります。

ただし、一部の拡張モジュールは、標準またはサードパーティのいずれかで、圧縮やハッシュなどの計算集約型タスクを実行するときにGILを解放するように設計されています。 また、I / Oを実行すると、GILは常に解放されます。

「フリースレッド」インタープリター(共有データをより細かい粒度でロックするインタープリター)を作成するためのこれまでの取り組みは、一般的なシングルプロセッサーの場合にパフォーマンスが低下したため、成功していません。 このパフォーマンスの問題を克服すると、実装がはるかに複雑になり、保守にコストがかかると考えられています。

ハッシュベースのpyc

対応するソースファイルの最終変更時刻ではなくハッシュを使用してその有効性を判断するバイトコードキャッシュファイル。 キャッシュされたバイトコードの無効化を参照してください。

ハッシュ可能

オブジェクトは、その存続期間中に変更されないハッシュ値を持ち(__hash__()メソッドが必要)、他のオブジェクトと比較できる場合( [が必要)、 hashable です。 X179X]メソッド)。 等しいと比較するハッシュ可能なオブジェクトは、同じハッシュ値を持っている必要があります。

これらのデータ構造は内部でハッシュ値を使用するため、ハッシュ可能性により、オブジェクトは辞書キーおよびセットメンバーとして使用可能になります。

Pythonの不変の組み込みオブジェクトのほとんどはハッシュ可能です。 可変コンテナ(リストや辞書など)はそうではありません。 不変のコンテナー(タプルやフリーズセットなど)は、要素がハッシュ可能である場合にのみハッシュ可能です。 ユーザー定義クラスのインスタンスであるオブジェクトは、デフォルトでハッシュ可能です。 それらはすべて等しくなく(それら自体を除いて)比較され、それらのハッシュ値はそれらの id()から導出されます。

アイドル

Pythonの統合開発環境。 IDLEは、Pythonの標準ディストリビューションに付属する基本的なエディターおよびインタープリター環境です。

不変

固定値のオブジェクト。 不変オブジェクトには、数字、文字列、タプルが含まれます。 このようなオブジェクトは変更できません。 別の値を保存する必要がある場合は、新しいオブジェクトを作成する必要があります。 これらは、辞書のキーなど、一定のハッシュ値が必要な場所で重要な役割を果たします。

インポートパス

パスベースのファインダーがインポートするモジュールを検索する場所(またはパスエントリ)のリスト。 インポート中、この場所のリストは通常 sys.path から取得されますが、サブパッケージの場合は、親パッケージの__path__属性から取得される場合もあります。

インポート

あるモジュールのPythonコードを別のモジュールのPythonコードで利用できるようにするプロセス。

インポーター

モジュールの検索とロードの両方を行うオブジェクト。 ファインダーオブジェクトとローダーオブジェクトの両方。

相互の作用

Pythonにはインタラクティブなインタープリターがあります。つまり、インタープリタープロンプトでステートメントと式を入力し、すぐに実行して結果を確認できます。 引数なしでpythonを起動するだけです(おそらくコンピュータのメインメニューから選択することによって)。 これは、新しいアイデアをテストしたり、モジュールやパッケージを検査したりするための非常に強力な方法です(help(x)を思い出してください)。

通訳

Pythonは、コンパイルされた言語とは対照的に、インタープリター型言語ですが、バイトコードコンパイラーが存在するため、区別があいまいになる可能性があります。 これは、実行可能ファイルを明示的に作成せずにソースファイルを直接実行できることを意味します。 インタプリタ言語は通常、コンパイルされた言語よりも開発/デバッグサイクルが短くなりますが、プログラムの実行速度も一般的に遅くなります。 インタラクティブも参照してください。

通訳のシャットダウン

シャットダウンを求められると、Pythonインタープリターは特別なフェーズに入り、モジュールやさまざまな重要な内部構造など、割り当てられたすべてのリソースを徐々に解放します。 また、ガベージコレクターに対していくつかの呼び出しを行います。 これにより、ユーザー定義のデストラクタまたはweakrefコールバックでコードの実行がトリガーされる可能性があります。 シャットダウンフェーズ中に実行されたコードは、依存するリソースが機能しなくなる可能性があるため、さまざまな例外が発生する可能性があります(一般的な例はライブラリモジュールまたは警告機構です)。

インタプリタがシャットダウンする主な理由は、__main__モジュールまたは実行中のスクリプトの実行が終了したことです。

反復可能

メンバーを一度に1つずつ返すことができるオブジェクト。 反復可能オブジェクトの例には、すべてのシーケンスタイプ( liststrtuple など)および dict などの一部の非シーケンスタイプが含まれます。 ファイルオブジェクト、および__iter__()メソッドまたはシーケンスセマンティクスを実装する__getitem__()メソッドで定義したクラスのオブジェクト。

Iterablesは、 for ループや、シーケンスが必要な他の多くの場所( zip()map()、…)で使用できます。 反復可能オブジェクトが引数として組み込み関数 iter()に渡されると、オブジェクトのイテレーターを返します。 このイテレータは、値のセットを1回渡すのに適しています。 イテレータを使用する場合、通常、 iter()を呼び出したり、イテレータオブジェクトを自分で処理したりする必要はありません。 forステートメントはそれを自動的に行い、ループの間イテレーターを保持するための一時的な名前のない変数を作成します。 イテレータシーケンス、およびジェネレータも参照してください。

イテレータ

データのストリームを表すオブジェクト。 イテレータの __ next __()メソッドを繰り返し呼び出す(または組み込み関数 next()に渡す)と、ストリーム内の連続するアイテムが返されます。 使用可能なデータがなくなると、代わりに StopIteration 例外が発生します。 この時点で、イテレータオブジェクトは使い果たされ、その__next__()メソッドをさらに呼び出すと、 StopIteration が再度発生します。 イテレータには、イテレータオブジェクト自体を返す__iter__()メソッドが必要です。これにより、すべてのイテレータもイテレータであり、他のイテレータが受け入れられるほとんどの場所で使用できます。 注目すべき例外の1つは、複数の反復パスを試行するコードです。 コンテナオブジェクト( list など)は、 iter()関数に渡すか、 for ループで使用するたびに、新しいイテレータを生成します。 。 イテレータを使用してこれを試行すると、前の反復パスで使用されたものと同じ使い果たされたイテレータオブジェクトが返され、空のコンテナのように見えます。

詳細については、イテレータタイプを参照してください。

キー機能

キー関数または照合関数は、並べ替えまたは順序付けに使用される値を返す呼び出し可能関数です。 たとえば、 locale.strxfrm()は、ロケール固有のソート規則を認識するソートキーを生成するために使用されます。

Pythonの多くのツールは、要素の順序付けやグループ化の方法を制御するための主要な関数を受け入れます。 それらには、 min()max()sorted()list.sort()heapq.mergeが含まれます。 ()heapq.nsmallest()heapq.nlargest()、および itertools.groupby()

キー関数を作成する方法はいくつかあります。 例えば。 str.lower()メソッドは、大文字と小文字を区別しないソートのキー関数として機能します。 または、lambda r: (r[0], r[2])などのラムダ式からキー関数を作成することもできます。 また、 operator モジュールは、 attrgetter()itemgetter()、および methodcaller()の3つの主要な関数コンストラクターを提供します。 キー機能を作成して使用する方法の例については、 Sorting HOW TO を参照してください。

キーワード引数

引数を参照してください。

ラムダ

関数が呼び出されたときに評価される単一ので構成される匿名のインライン関数。 ラムダ関数を作成するための構文はlambda [parameters]: expressionです。

LBYL

石橋を叩いて渡る。 このコーディングスタイルは、呼び出しまたはルックアップを行う前に、前提条件を明示的にテストします。 このスタイルは、 EAFP アプローチとは対照的であり、多くの if ステートメントが存在することを特徴としています。

マルチスレッド環境では、LBYLアプローチは、「見る」と「跳躍する」の間に競合状態を引き起こすリスクがあります。 たとえば、別のスレッドがテスト後、ルックアップの前にマッピングからキーを削除すると、コードif key in mapping: return mapping[key]が失敗する可能性があります。 この問題は、ロックを使用するか、EAFPアプローチを使用することで解決できます。

ロケールエンコーディング

Unixでは、これはLC_CTYPEロケールのエンコーディングです。 locale.setlocale(locale.LC_CTYPE, new_locale)で設定できます。

Windowsでは、ANSIコードページです(例:cp1252)。

locale.getpreferredencoding(False)を使用して、ロケールエンコーディングを取得できます。

Pythonは、ファイルシステムエンコーディングとエラーハンドラーを使用して、Unicodeファイル名とバイトファイル名の間で変換を行います。

リスト

組み込みのPython シーケンス。 その名前にもかかわらず、要素へのアクセスはO(1)であるため、リンクリストよりも他の言語の配列に似ています。

リスト内包

シーケンス内の要素のすべてまたは一部を処理し、結果を含むリストを返すコンパクトな方法。 result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]は、0から255の範囲の偶数の16進数(0x ..)を含む文字列のリストを生成します。 if 句はオプションです。 省略した場合、range(256)のすべての要素が処理されます。

ローダ

モジュールをロードするオブジェクト。 load_module()という名前のメソッドを定義する必要があります。 ローダーは通常、ファインダーによって返されます。 詳細については PEP 302 を、抽象基本クラスについては importlib.abc.Loader を参照してください。

魔法の方法

特殊メソッドの非公式の同義語。

マッピング

任意のキールックアップをサポートし、 Mapping または MutableMapping abstract base classes で指定されたメソッドを実装するコンテナオブジェクト。 例としては、 dictcollections.defaultdictcollections.OrderedDictcollections.Counter などがあります。

メタパスファインダー

sys.meta_path の検索によって返されたファインダー。 メタパスファインダーは、パスエントリファインダーに関連していますが、異なります。

メタパスファインダーが実装するメソッドについては、 importlib.abc.MetaPathFinder を参照してください。

メタクラス

クラスのクラス。 クラス定義は、クラス名、クラスディクショナリ、および基本クラスのリストを作成します。 メタクラスは、これら3つの引数を取り、クラスを作成する責任があります。 ほとんどのオブジェクト指向プログラミング言語は、デフォルトの実装を提供します。 Pythonを特別なものにしているのは、カスタムメタクラスを作成できることです。 ほとんどのユーザーはこのツールを必要としませんが、必要が生じた場合、メタクラスは強力でエレガントなソリューションを提供できます。 これらは、属性アクセスのログ記録、スレッドセーフの追加、オブジェクト作成の追跡、シングルトンの実装、およびその他の多くのタスクに使用されてきました。

詳細については、メタクラスを参照してください。

方法

クラス本体内で定義される関数。 そのクラスのインスタンスの属性として呼び出された場合、メソッドはインスタンスオブジェクトを最初の引数(通常はselfと呼ばれます)として取得します。 関数およびネストされたスコープを参照してください。

メソッド解決順序

メソッド解決順序は、ルックアップ中に基本クラスでメンバーが検索される順序です。 2.3リリース以降にPythonインタープリターで使用されているアルゴリズムの詳細については、 Python2.3メソッド解決順序を参照してください。

モジュール

Pythonコードの組織単位として機能するオブジェクト。 モジュールには、任意のPythonオブジェクトを含む名前空間があります。 モジュールは、 importing のプロセスによってPythonにロードされます。

パッケージも参照してください。

モジュール仕様

モジュールのロードに使用されるインポート関連の情報を含む名前空間。 importlib.machinery.ModuleSpec のインスタンス。

MRO

メソッド解決順序を参照してください。

可変

可変オブジェクトは値を変更できますが、 id()は保持します。 不変も参照してください。

名前付きタプル

「名前付きタプル」という用語は、タプルから継承し、名前付き属性を使用してインデックス可能な要素にもアクセスできるすべてのタイプまたはクラスに適用されます。 タイプまたはクラスには、他の機能もある場合があります。

time.localtime()および os.stat()によって返される値を含む、いくつかの組み込み型はタプルと呼ばれます。 別の例は sys.float_info です。

>>> sys.float_info[1]                   # indexed access
1024
>>> sys.float_info.max_exp              # named field access
1024
>>> isinstance(sys.float_info, tuple)   # kind of tuple
True

一部の名前付きタプルは組み込み型です(上記の例など)。 または、 tuple を継承し、名前付きフィールドを定義する通常のクラス定義から名前付きタプルを作成することもできます。 このようなクラスは、手動で作成することも、ファクトリ関数 collections.namedtuple()を使用して作成することもできます。 後者の手法では、手書きまたは組み込みの名前付きタプルにはないメソッドがいくつか追加されます。

名前空間

変数が格納される場所。 名前空間は辞書として実装されます。 オブジェクト(メソッド内)には、ローカル、グローバル、および組み込みの名前空間と、ネストされた名前空間があります。 名前空間は、名前の競合を防ぐことでモジュール性をサポートします。 たとえば、関数 builtins.openos.open()は、名前空間によって区別されます。 名前空間は、どのモジュールが関数を実装するかを明確にすることで、読みやすさと保守性も向上させます。 たとえば、 random.seed()または itertools.islice()と書くと、これらの関数が random および itertools [によって実装されていることが明確になります。 X168X]モジュール、それぞれ。

名前空間パッケージ

PEP 420 パッケージ。サブパッケージのコンテナーとしてのみ機能します。 名前空間パッケージには物理的な表現がない場合があり、__init__.pyファイルがないため、特に通常のパッケージとは異なります。

モジュールも参照してください。

ネストされたスコープ

囲んでいる定義内の変数を参照する機能。 たとえば、別の関数内で定義された関数は、外部関数の変数を参照できます。 ネストされたスコープは、デフォルトでは参照用にのみ機能し、割り当て用には機能しないことに注意してください。 ローカル変数は、最も内側のスコープで読み取りと書き込みの両方を行います。 同様に、グローバル変数はグローバル名前空間に対して読み取りと書き込みを行います。 nonlocal を使用すると、外部スコープに書き込むことができます。

新しいスタイルのクラス

現在すべてのクラスオブジェクトに使用されているクラスのフレーバーの古い名前。 以前のPythonバージョンでは、 __ slots __ 、記述子、プロパティ、__getattribute__()、クラスメソッド、静的メソッドなど、新しいスタイルのクラスのみがPythonの新しい多用途の機能を使用できました。

オブジェクト

状態(属性または値)および定義された動作(メソッド)を持つデータ。 また、新しいスタイルのクラスの究極の基本クラス。

パッケージ

サブモジュールまたは再帰的にサブパッケージを含めることができるPython モジュール。 技術的には、パッケージは__path__属性を持つPythonモジュールです。

通常パッケージおよび名前空間パッケージも参照してください。

パラメータ

関数が受け入れることができる引数(または場合によっては引数)を指定する関数(またはメソッド)定義内の名前付きエンティティ。 パラメータには次の5種類があります。

  • position-or-keywordpositionally または keyword引数として渡すことができる引数を指定します。 これはデフォルトの種類のパラメーターです。たとえば、次の foo および bar です。

    def func(foo, bar=None): ...
  • position-only :位置によってのみ指定できる引数を指定します。 位置のみのパラメーターは、関数定義のパラメーターリストの後に/文字を含めることで定義できます。たとえば、次の posonly1 および posonly2 です。

    def func(posonly1, posonly2, /, positional_or_keyword): ...
  • キーワードのみ:キーワードでのみ指定できる引数を指定します。 キーワードのみのパラメーターは、単一のvar-positionalパラメーターまたはその前の関数定義のパラメーターリストに裸の*を含めることで定義できます。たとえば、 kw_only1 および kw_only2 ] 以下では:

    def func(arg, *, kw_only1, kw_only2): ...
  • var-positional :位置引数の任意のシーケンスを提供できることを指定します(他のパラメーターによって既に受け入れられている位置引数に加えて)。 このようなパラメーターは、パラメーター名の前に*を付けることで定義できます。たとえば、次の場合は args です。

    def func(*args, **kwargs): ...
  • var-keyword :任意の数のキーワード引数を指定できることを指定します(他のパラメーターで既に受け入れられているキーワード引数に加えて)。 このようなパラメーターは、パラメーター名の前に**を付けることで定義できます。たとえば、上記の例では kwargs です。

パラメータでは、オプションの引数と必須の引数の両方、および一部のオプションの引数のデフォルト値を指定できます。

引数用語集エントリ、引数とパラメータの違いに関するFAQ質問、 inspect.Parameter クラス、関数定義も参照してください。 ]セクション、および PEP 362

パスエントリ

パスベースのファインダーがインポートするモジュールを見つけるために参照するインポートパス上の単一の場所。

パスエントリファインダー

sys.path_hooks の呼び出し可能オブジェクトによって返されるファインダー(つまり、 パスエントリが与えられたモジュールを見つける方法を知っているパスエントリフック)。

パスエントリファインダーが実装するメソッドについては、 importlib.abc.PathEntryFinder を参照してください。

パスエントリフック

特定のパスエントリでモジュールを検索する方法を知っている場合、パスエントリファインダーを返すsys.path_hookリストの呼び出し可能オブジェクト。

パスベースのファインダー

インポートパスでモジュールを検索するデフォルトのメタパスファインダーの1つ。

パスのようなオブジェクト

ファイルシステムパスを表すオブジェクト。 パスのようなオブジェクトは、パスを表す str または bytes オブジェクト、または os.PathLike プロトコルを実装するオブジェクトのいずれかです。 os.PathLike プロトコルをサポートするオブジェクトは、 os.fspath()[を呼び出すことにより、 str または bytes ファイルシステムパスに変換できます。 X158X]関数; os.fsdecode()および os.fsencode()を使用して、代わりに str または bytes の結果をそれぞれ保証できます。 PEP 519 によって導入されました。

PEP

Python拡張提案。 PEPは、Pythonコミュニティに情報を提供したり、Pythonまたはそのプロセスや環境の新機能を説明したりする設計ドキュメントです。 PEPは、提案された機能の簡潔な技術仕様と理論的根拠を提供する必要があります。

PEPは、主要な新機能を提案し、問題に関するコミュニティの意見を収集し、Pythonに取り入れられた設計上の決定を文書化するための主要なメカニズムとなることを目的としています。 PEPの作成者は、コミュニティ内でコンセンサスを構築し、反対意見を文書化する責任があります。

PEP 1 を参照してください。

部分

PEP 420 で定義されている、名前空間パッケージに寄与する単一のディレクトリ(おそらくzipファイルに格納されている)内のファイルのセット。

位置引数

引数を参照してください。

暫定API

暫定APIは、標準ライブラリの下位互換性保証から意図的に除外されたものです。 このようなインターフェースへの大きな変更は予想されていませんが、暫定的にマークされている限り、コア開発者が必要と見なした場合、後方互換性のない変更(インターフェースの削除を含む)が発生する可能性があります。 このような変更は不当に行われることはありません。APIを含める前に見逃されていた重大な根本的な欠陥が発見された場合にのみ発生します。

暫定APIの場合でも、下位互換性のない変更は「最後の手段の解決策」と見なされます。特定された問題に対する下位互換性のある解決策を見つけるためにあらゆる試みが行われます。

このプロセスにより、問題のある設計エラーを長期間ロックすることなく、標準ライブラリを時間の経過とともに進化させ続けることができます。 詳細については、 PEP 411 を参照してください。

暫定パッケージ

暫定API を参照してください。

Python 3000

Python 3.xリリースラインのニックネーム(バージョン3のリリースが遠い将来のものであったときに造られました。)これは「Py3k」とも略されます。

Pythonic

他の言語に共通の概念を使用してコードを実装するのではなく、Python言語の最も一般的なイディオムに厳密に従ったアイデアまたはコード。 たとえば、Pythonの一般的なイディオムは、 for ステートメントを使用してイテラブルのすべての要素をループすることです。 他の多くの言語にはこのタイプの構造がないため、Pythonに慣れていない人は、代わりに数値カウンターを使用することがあります。

for i in range(len(food)):
    print(food[i])

よりクリーンなPythonicメソッドとは対照的に:

for piece in food:
    print(piece)
修飾名

PEP 3155 で定義されているように、モジュールのグローバルスコープからそのモジュールで定義されているクラス、関数、またはメソッドへの「パス」を示す点線の名前。 トップレベルの関数とクラスの場合、修飾名はオブジェクトの名前と同じです。

>>> class C:
...     class D:
...         def meth(self):
...             pass
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'C.D'
>>> C.D.meth.__qualname__
'C.D.meth'

モジュールを参照するために使用される場合、完全修飾名は、親パッケージを含む、モジュールへの点線のパス全体を意味します。 email.mime.text

>>> import email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
参照カウント

オブジェクトへの参照の数。 オブジェクトの参照カウントがゼロに低下すると、割り当てが解除されます。 参照カウントは通常、Pythonコードには表示されませんが、 CPython 実装の重要な要素です。 sys モジュールは、プログラマーが特定のオブジェクトの参照カウントを返すために呼び出すことができる getrefcount()関数を定義します。

通常パッケージ

__init__.pyファイルを含むディレクトリなど、従来のパッケージ

名前空間パッケージも参照してください。

__slots__

インスタンス属性のスペースを事前に宣言し、インスタンスディクショナリを削除することでメモリを節約するクラス内の宣言。 この手法は一般的ですが、正しく理解するのはやや難しいため、メモリが重要なアプリケーションに多数のインスタンスが存在するまれなケースに最適です。

順序

iterable は、__getitem__()特殊メソッドを介して整数インデックスを使用した効率的な要素アクセスをサポートし、シーケンスの長さを返す__len__()メソッドを定義します。 いくつかの組み込みシーケンスタイプは、 liststrtuple 、および bytes です。 dict__getitem__()__len__()もサポートしますが、ルックアップは整数ではなく任意の不変キーを使用するため、シーケンスではなくマッピングと見なされることに注意してください。

collections.abc.Sequence 抽象基本クラスは、__getitem__()__len__()だけでなく、count()、 [ X159X]、__contains__()、および__reversed__()。 この拡張インターフェースを実装する型は、 register()を使用して明示的に登録できます。

リスト内包表記

要素のすべてまたは一部を反復可能に処理し、結果とともにセットを返すコンパクトな方法。 results = {c for c in 'abracadabra' if c not in 'abc'}は、文字列のセット{'r', 'd'}を生成します。 リスト、セット、辞書については、ディスプレイを参照してください。

シングルディスパッチ

ジェネリック関数ディスパッチの形式で、単一の引数のタイプに基づいて実装が選択されます。

スライス

通常、シーケンスの一部を含むオブジェクト。 スライスは、variable_name[1:3:5]のように、複数が指定されている場合、数字の間にコロンを含む添え字表記[]を使用して作成されます。 角かっこ(添え字)表記は、内部でスライスオブジェクトを使用します。

特別な方法

型に対して特定の操作(加算など)を実行するためにPythonによって暗黙的に呼び出されるメソッド。 このようなメソッドの名前は、二重下線で始まり、二重下線で終わります。 特別なメソッドは、特別なメソッド名に記載されています。

声明

ステートメントはスイート(コードの「ブロック」)の一部です。 ステートメントは、、または ifwhilefor などのキーワードを持ついくつかの構成の1つです。

強い参照

PythonのCAPIでは、強力な参照とは、オブジェクトの作成時にオブジェクトの参照カウントをインクリメントし、削除時にオブジェクトの参照カウントをデクリメントするオブジェクトへの参照です。

Py_NewRef()関数を使用して、オブジェクトへの強力な参照を作成できます。 通常、 Py_DECREF()関数は、1つの参照のリークを回避するために、強力な参照のスコープを終了する前に、強力な参照で呼び出す必要があります。

借用参照も参照してください。

テキストエンコーディング

Unicode文字列をバイトにエンコードするコーデック。

テキストファイル

ファイルオブジェクトは、 str オブジェクトの読み取りと書き込みが可能です。 多くの場合、テキストファイルは実際にバイト指向のデータストリームにアクセスし、テキストエンコーディングを自動的に処理します。 テキストファイルの例としては、テキストモードで開かれたファイル('r'または'w')、 sys.stdinsys.stdout 、および[ X137X] io.StringIO 。

バイトのようなオブジェクトの読み取りと書き込みが可能なファイルオブジェクトについては、バイナリファイルも参照してください。

トリプルクォート文字列

引用符( ")またはアポストロフィ( ')の3つのインスタンスでバインドされた文字列。 一重引用符で囲まれた文字列では使用できない機能は提供されませんが、いくつかの理由で役立ちます。 文字列内にエスケープされていない一重引用符と二重引用符を含めることができ、継続文字を使用せずに複数行にまたがることができるため、docstringを作成するときに特に便利です。

タイプ

Pythonオブジェクトのタイプによって、オブジェクトの種類が決まります。 すべてのオブジェクトにはタイプがあります。 オブジェクトのタイプは、その __ class __ 属性としてアクセス可能であるか、type(obj)で取得できます。

タイプエイリアス

タイプを識別子に割り当てることによって作成されるタイプの同義語。

タイプエイリアスは、タイプヒントを簡略化するのに役立ちます。 例:

def remove_gray_shades(
        colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
    pass

このように読みやすくすることができます:

Color = tuple[int, int, int]

def remove_gray_shades(colors: list[Color]) -> list[Color]:
    pass

この機能については、タイピングおよび PEP 484 を参照してください。

タイプヒント

変数、クラス属性、または関数パラメーターまたは戻り値の予想される型を指定するアノテーション

型ヒントはオプションであり、Pythonによって強制されませんが、静的型分析ツールに役立ち、IDEのコード補完とリファクタリングを支援します。

typing.get_type_hints()を使用して、グローバル変数、クラス属性、および関数の型ヒントにアクセスできますが、ローカル変数にはアクセスできません。

この機能については、タイピングおよび PEP 484 を参照してください。

ユニバーサル改行

次のすべてが行の終わりとして認識されるテキストストリームを解釈する方法:Unixの行末規則'\n'、Windowsの規則'\r\n'、および古いMacintoshの規則[ X211X] 。 追加の使用法については、 PEP 278 PEP 3116 、および bytes.splitlines()を参照してください。

変数注釈

変数またはクラス属性のアノテーション

変数またはクラス属性に注釈を付ける場合、割り当てはオプションです。

class C:
    field: 'annotation'

変数注釈は通常、タイプヒントに使用されます。たとえば、この変数は int 値を取ることが期待されます。

count: int = 0

変数の注釈構文は、セクション注釈付き代入ステートメントで説明されています。

この機能について説明している機能アノテーション PEP 484 、および PEP 526 を参照してください。 アノテーションの操作に関するベストプラクティスについては、アノテーションのベストプラクティスも参照してください。

仮想環境

同じシステムで実行されている他のPythonアプリケーションの動作に干渉することなく、PythonユーザーとアプリケーションがPython配布パッケージをインストールおよびアップグレードできるようにする協調的に分離されたランタイム環境。

venv も参照してください。

仮想マシン

完全にソフトウェアで定義されたコンピューター。 Pythonの仮想マシンは、バイトコードコンパイラによって発行された bytecode を実行します。

Pythonの禅

言語の理解と使用に役立つPythonの設計原則と哲学のリスト。 リストは、インタラクティブプロンプトで「import this」と入力すると見つかります。