用語集¶
>>>¶対話型 シェルにおけるデフォルトの Python プロンプトです。インタープリターで対話的に実行されるコード例でよく見られます。
...¶次のものが考えられます:
対話型 (interactive) シェルにおいて、インデントされたコードブロック、対応する左右の区切り文字の組 (丸括弧、角括弧、波括弧、三重引用符) の内側、デコレーターの後に、コードを入力する際に表示されるデフォルトの Python プロンプトです。
The three dots form of the Ellipsis object.
- abstract base class¶
(抽象基底クラス) 抽象基底クラスは duck-typing を補完するもので、
hasattr()などの別のテクニックでは不恰好であったり微妙に誤る (例えば magic methods の場合) 場合にインターフェースを定義する方法を提供します。ABC は仮想 (virtual) サブクラスを導入します。これは親クラスから継承しませんが、それでもisinstance()やissubclass()に認識されます;abcモジュールのドキュメントを参照してください。Python には、多くの組み込み ABC が同梱されています。その対象は、(collections.abcモジュールで) データ構造、(numbersモジュールで) 数、(ioモジュールで) ストリーム、(importlib.abcモジュールで) インポートファインダ及びローダーです。abcモジュールを利用して独自の ABC を作成できます。- annotation¶
(アノテーション) 変数、クラス属性、関数のパラメータや返り値に関係するラベルです。 慣例により type hint として使われています。
Annotations of local variables cannot be accessed at runtime, but annotations of global variables, class attributes, and functions are stored in the
__annotations__special attribute of modules, classes, and functions, respectively.See variable annotation, function annotation, PEP 484 and PEP 526, which describe this functionality. Also see アノテーションのベストプラクティス for best practices on working with annotations.
- 引数 (argument)¶
(実引数) 関数を呼び出す際に、 関数 (または メソッド) に渡す値です。実引数には2種類あります:
キーワード引数: 関数呼び出しの際に引数の前に識別子がついたもの (例:
name=) や、**に続けた辞書の中の値として渡された引数。例えば、次のcomplex()の呼び出しでは、3と5がキーワード引数です:complex(real=3, imag=5) complex(**{'real': 3, 'imag': 5})
位置引数: キーワード引数以外の引数。位置引数は引数リストの先頭に書くことができ、また
*に続けた iterable の要素として渡すことができます。例えば、次の例では3と5は両方共位置引数です:complex(3, 5) complex(*(3, 5))
実引数は関数の実体において名前付きのローカル変数に割り当てられます。割り当てを行う規則については 呼び出し (call) を参照してください。シンタックスにおいて実引数を表すためにあらゆる式を使うことが出来ます。評価された値はローカル変数に割り当てられます。
仮引数 、FAQ の 実引数と仮引数の違いは何ですか? 、PEP 362 を参照してください。
- asynchronous context manager¶
(非同期コンテキストマネージャ)
__aenter__()と__aexit__()メソッドを定義することでasync with文内の環境を管理するオブジェクトです。 PEP 492 で導入されました。- asynchronous generator¶
Informally used to mean either an asynchronous generator function or an asynchronous generator iterator, depending on context. The formal terms asynchronous generator function and asynchronous generator iterator are uncommon in practice; "asynchronous generator" alone is almost always sufficient.
- asynchronous generator function¶
A function which returns an asynchronous generator iterator. It looks like a coroutine function defined with
async defexcept that it containsyieldexpressions for producing a series of values usable in anasync forloop. See PEP 525.非同期ジェネレータ関数には、
async for文やasync with文だけでなくawait式もあることがあります。- asynchronous generator iterator¶
An object created by an asynchronous generator function.
これは asynchronous iterator で、
__anext__()メソッドを使って呼ばれると awaitable オブジェクトを返します。 この awaitable オブジェクトは、次のyield式まで非同期ジェネレータ関数の本体を実行します。各
yieldは処理を一時的に中断し、実行状態(ローカル変数や保留中の try 文を含む)を記憶します。__anext__()が返す別の awaitable によって 非同期ジェネレータイテレータ の実行が実際に再開すると、中断した箇所から処理を続けます。 PEP 492 と PEP 525 を参照してください。- asynchronous iterable¶
(非同期イテラブル)
async for文の中で使用できるオブジェクトです。 自身の__aiter__()メソッドから asynchronous iterator を返さなければなりません。 PEP 492 で導入されました。- asynchronous iterator¶
(非同期イテレータ)
__aiter__()と__anext__()メソッドを実装したオブジェクトです。__anext__()は awaitable オブジェクトを返さなければなりません。async forはStopAsyncIteration例外を送出するまで、非同期イテレータの__anext__()メソッドが返す awaitable を解決します。 PEP 492 で導入されました。- atomic operation¶
An operation that appears to execute as a single, indivisible step: no other thread can observe it half-done, and its effects become visible all at once. Python does not guarantee that high-level statements are atomic (for example,
x += 1performs multiple bytecode operations and is not atomic). Atomicity is only guaranteed where explicitly documented. See also race condition and data race.- 属性¶
(属性) オブジェクトに関連付けられ、ドット表記式によって名前で通常参照される値です。例えば、オブジェクト o が属性 a を持っているとき、その属性は o.a で参照されます。
オブジェクトには、 識別子 (identifier) およびキーワード (keyword) で定義される識別子ではない名前の属性を与えることができます。たとえば
setattr()を使い、オブジェクトがそれを許可している場合に行えます。このような属性はドット表記式ではアクセスできず、代わりにgetattr()を使って取る必要があります。- awaitable¶
(待機可能)
await式で使用することが出来るオブジェクトです。 coroutine か、__await__()メソッドがあるオブジェクトです。 PEP 492 を参照してください。- BDFL¶
慈悲深き終身独裁者 (Benevolent Dictator For Life) の略です。Python の作者、Guido van Rossum のことです。
- binary file¶
(バイナリファイル) bytes-like オブジェクト の読み込みおよび書き込みができる ファイルオブジェクト です。 バイナリファイルの例は、バイナリモード (
'rb','wb'or'rb+') で開かれたファイル、sys.stdin.buffer、sys.stdout.buffer、io.BytesIOやgzip.GzipFile. のインスタンスです。- borrowed reference¶
(借用参照) Python の C API で、オブジェクトを使うコードが所有していない、そのオブジェクトへの参照です。 オブジェクトが破棄されると、ダングリングポインタになります。 たとえば、ガベージコレクションによってオブジェクトへの最後の 強参照 が取り除かれ、オブジェクトが破棄されることがあります。
借用参照 に対して
Py_INCREF()を呼び出し、その場で 強参照 に変換することを推奨します。 ただし、借用参照の最後の使用までオブジェクトが破棄され得ない場合は除きます。Py_NewRef()関数を使うと、新しい 強参照 を作成できます。- bytes-like object¶
バッファプロトコル (buffer Protocol) をサポートしていて、 C 言語の意味で 連続した バッファーを提供可能なオブジェクト。
bytes,bytearray,array.arrayや、多くの一般的なmemoryviewオブジェクトがこれに当たります。 bytes-like オブジェクトは、データ圧縮、バイナリファイルへの保存、ソケットを経由した送信など、バイナリデータを要求するいろいろな操作に利用することができます。操作によっては、バイナリデータが変更可能である必要があります。 ドキュメントでは、そのようなデータを「読み書き可能な bytes-like オブジェクト」と呼ぶことがよくあります。 変更可能なバッファオブジェクトには、
bytearrayやbytearrayのmemoryviewがあります。 一方、別の操作では、バイナリデータが不変なオブジェクト(「読み出し専用の bytes-like オブジェクト」)に格納されている必要があります。 そのようなオブジェクトには、bytesやbytesオブジェクトのmemoryviewがあります。- bytecode¶
(バイトコード) Python のソースコードは、 Python プログラムの CPython インタプリタの内部表現であるバイトコードへとコンパイルされます。 バイトコードは
.pycファイルにキャッシュされ、同じファイルが二度目に実行されるときはより高速になります (ソースコードからバイトコードへの再度のコンパイルは回避されます)。 この "中間言語 (intermediate language)" は、各々のバイトコードに対応する機械語を実行する 仮想マシン で動作するといえます。 重要な注意として、バイトコードは異なる Python 仮想マシン間で動作することや、Python リリース間で安定であることは期待されていません。バイトコードの命令一覧は dis モジュール にあります。
- callable¶
呼び出し可能オブジェクトは、次の構文で呼び出すことができるオブジェクトです。 その際、実引数(実引数 を参照)を渡すこともできます。
callable(argument1, argument2, argumentN)
関数 も メソッド も、呼び出し可能オブジェクトです。
__call__()メソッドを実装したクラスのインスタンスも、呼び出し可能オブジェクトです。- callback¶
(コールバック) 将来のある時点で実行されるために引数として渡される関数
- クラス¶
(クラス) ユーザー定義オブジェクトを作成するためのテンプレートです。クラス定義は普通、そのクラスのインスタンス上の操作をするメソッドの定義を含みます。
- class variable¶
(クラス変数) クラス内で定義され、クラスレベルでのみ(つまり、クラスのインスタンスではなく)変更することを意図した変数です。
- closure variable¶
(クロージャ変数) ネストされたスコープ から参照される 自由変数 のうち、実行時にグローバル名前空間や組み込み名前空間から解決されるのではなく、外側のスコープで定義されているものです。 書き込みを可能にするために
nonlocalキーワードで明示的に定義する場合と、変数を読み取るだけで暗黙に定義される場合があります。たとえば、次のコードの
inner関数では、xとprintはどちらも 自由変数 ですが、クロージャ変数 はxだけです。def outer(): x = 0 def inner(): nonlocal x x += 1 print(x) return inner
codeobject.co_freevars属性には、その名前に反して、参照されるすべての自由変数ではなくクロージャ変数の名前だけが含まれます。 このため、クロージャ変数だけを指す意図で、より一般的な用語である 自由変数 が使われることもあります。- complex number¶
(複素数) よく知られている実数系を拡張したもので、すべての数は実部と虚部の和として表されます。虚数は虚数単位 (
-1の平方根) に実数を掛けたもので、一般に数学ではiと書かれ、工学ではjと書かれます。Python は複素数に組み込みで対応し、後者の表記を取っています。虚部は末尾にjをつけて書きます。例えば3+1jです。mathモジュールの複素数版を利用するには、cmathを使います。複素数の使用はかなり高度な数学の機能です。必要性を感じなければ、ほぼ間違いなく無視してしまってよいでしょう。- concurrency¶
The ability of a computer program to perform multiple tasks at the same time. Python provides libraries for writing programs that make use of different forms of concurrency.
asynciois a library for dealing with asynchronous tasks and coroutines.threadingprovides access to operating system threads andmultiprocessingto operating system processes. Multi-core processors can execute threads and processes on different CPU cores at the same time (see parallelism).- concurrent modification¶
When multiple threads modify shared data at the same time. Concurrent modification without proper synchronization can cause race conditions, and might also trigger a data race, data corruption, or both.
- context¶
(コンテキスト) この語は、使われる場所や使い方によって意味が異なります。 よく使われる意味には次のものがあります:
コンテキストマネージャ が
with文を通じて設定する、一時的な状態または環境。特定の
contextvars.Contextオブジェクトに関連付けられ、ContextVarオブジェクトを通じてアクセスされる、キーと値の束縛の集まり。 コンテキスト変数 も参照してください。contextvars.Contextオブジェクト。 現在のコンテキスト も参照してください。
- コンテキスト管理プロトコル¶
with文から呼び出される__enter__()メソッドと__exit__()メソッドです。 PEP 343 を参照してください。- context manager¶
コンテキスト管理プロトコル を実装し、
with文内の環境を管理するオブジェクトです。 PEP 343 を参照してください。- context variable¶
どのコンテキストが 現在のコンテキスト であるかによって値が変わる変数です。 値には
contextvars.ContextVarオブジェクトを通じてアクセスします。 コンテキスト変数は主に、並行する非同期タスク間で状態を分離するために使われます。- contiguous¶
(隣接、連続) バッファが C-連続 または Fortran 連続 のいずれかである場合、かつその場合に限り、そのバッファは連続しているとみなされます。 ゼロ次元バッファは C 連続であり、Fortran 連続でもあります。 一次元配列では、要素はメモリ上で互いに隣接し、ゼロから始まる添字の昇順で並んでいなければなりません。 多次元の C-連続配列では、メモリアドレス順に要素をたどると、最後の添字が最も速く変化します。 一方、Fortran 連続配列では、最初の添字が最も速く変化します。
- コルーチン¶
(コルーチン) コルーチンはサブルーチンのより一般的な形式です。 サブルーチンには決められた地点から入り、別の決められた地点から出ます。 コルーチンには多くの様々な地点から入る、出る、再開することができます。 コルーチンは
async def文で実装できます。 PEP 492 を参照してください。- coroutine function¶
(コルーチン関数) coroutine オブジェクトを返す関数です。 コルーチン関数は
async def文で実装され、await、async for、 およびasync withキーワードを持つことが出来ます。 これらは PEP 492 で導入されました。- CPython¶
python.org で配布されている、Python プログラミング言語の標準的な実装です。"CPython" という単語は、この実装を Jython や IronPython といった他の実装と区別する必要が有る場合に利用されます。
- current context¶
(現在のコンテキスト)
ContextVarオブジェクトが コンテキスト変数 の値にアクセス (取得や設定) するために現在使っている コンテキスト (contextvars.Contextオブジェクト) です。 各スレッドには、それぞれ現在のコンテキストがあります。 非同期タスクを実行するフレームワーク (asyncioを参照) は、各タスクにコンテキストを関連付けます。 このコンテキストは、タスクが実行を開始または再開するたびに、現在のコンテキストになります。- data race¶
A situation where multiple threads access the same memory location concurrently, at least one of the accesses is a write, and the threads do not use any synchronization to control their access. Data races lead to non-deterministic behavior and can cause data corruption. Proper use of locks and other synchronization primitives prevents data races. Note that data races can only happen in native code, but that native code might be exposed in a Python API. See also race condition and thread-safe.
- deadlock¶
A situation in which two or more tasks (threads, processes, or coroutines) wait indefinitely for each other to release resources or complete actions, preventing any from making progress. For example, if thread A holds lock 1 and waits for lock 2, while thread B holds lock 2 and waits for lock 1, both threads will wait indefinitely. In Python this often arises from acquiring multiple locks in conflicting orders or from circular join/await dependencies. Deadlocks can be avoided by always acquiring multiple locks in a consistent order. See also lock and reentrant.
- decorator¶
A function returning another function, usually applied as a function transformation using the
@wrappersyntax. Common examples for decorators are@classmethodand@staticmethod.デコレータの文法はシンタックスシュガーです。次の2つの関数定義は意味的に同じものです:
def f(arg): ... f = staticmethod(f) @staticmethod def f(arg): ...
同じ概念がクラスにも存在しますが、あまり使われません。デコレータについて詳しくは、 関数定義 および クラス定義 のドキュメントを参照してください。
- descriptor¶
(デスクリプタ)
__get__()、__set__()、__delete__()のいずれかのメソッドを定義したオブジェクトです。 クラス属性がデスクリプタの場合、属性の検索時に、デスクリプタ特有の束縛動作が起動します。 通常、a.b を使って属性を取得、設定、削除すると、a のクラス辞書から b という名前のオブジェクトを検索しますが、b がデスクリプタなら、対応するデスクリプタのメソッドが呼び出されます。 デスクリプタは、関数、メソッド、プロパティ、クラスメソッド、静的メソッド、スーパークラスへの参照など、多くの機能の基盤となっているため、これを理解することは Python を深く理解する鍵となります。デスクリプタのメソッドに関しての詳細は、 デスクリプタ (descriptor) の実装 や Descriptor How To Guide を参照してください。
- dictionary¶
(辞書) 任意のキーが値に対応付けられる連想配列です。 キーには、
__hash__()メソッドと__eq__()メソッドを持つ任意のオブジェクトを使えます。 Perl ではハッシュと呼ばれます。- dictionary comprehension¶
(辞書内包表記) iterable 内の全てあるいは一部の要素を処理して、その結果からなる辞書を返すコンパクトな書き方です。
results = {n: n ** 2 for n in range(10)}とすると、キーnを値n ** 2に対応付ける辞書を生成します。 リスト、集合、辞書の表示 を参照してください。- dictionary view¶
(辞書ビュー)
dict.keys()、dict.values()、dict.items()が返すオブジェクトです。 辞書の項目の動的なビューを提供します。 すなわち、辞書が変更されるとビューはそれを反映します。 辞書ビューを強制的に完全なリストにするにはlist(dictview)を使用してください。 Dictionary view objects を参照してください。- docstring¶
(ドキュメンテーション文字列) クラス、関数、モジュールの最初の式として現れる文字列リテラルです。 スイートの実行時には無視されますが、コンパイラによって認識され、それを囲むクラス、関数、モジュールの
__doc__属性に格納されます。 イントロスペクションを通じて利用できるため、オブジェクトのドキュメントを書く標準的な場所となっています。- duck-typing¶
あるオブジェクトが正しいインターフェースを持っているかを決定するのにオブジェクトの型を見ないプログラミングスタイルです。代わりに、単純にオブジェクトのメソッドや属性が呼ばれたり使われたりします。(「アヒルのように見えて、アヒルのように鳴けば、それはアヒルである。」)インターフェースを型より重視することで、上手くデザインされたコードは、ポリモーフィックな代替を許して柔軟性を向上させます。ダックタイピングは
type()やisinstance()による判定を避けます。 (ただし、ダックタイピングを 抽象基底クラス で補完することもできます。) その代わり、典型的にhasattr()判定や EAFP プログラミングを利用します。- dunder¶
An informal short-hand for "double underscore", used when talking about a special method. For example,
__init__is often pronounced "dunder init".- EAFP¶
許可を求めるより、許しを請うほうが容易(Easier to ask for forgiveness than permission)の略です。 Python で一般的なこのコーディングスタイルでは、有効なキーや属性が存在すると仮定し、その仮定が誤っていた場合に例外を捕捉します。 この簡潔で高速なスタイルは、
try文とexcept文を多用することを特徴とします。 この手法は、C などの多くの言語で一般的な LBYL スタイルと対照的です。- expression¶
A piece of syntax which can be evaluated to some value. In other words, an expression is an accumulation of expression elements like literals, names, attribute access, operators or function calls which all return a value. Not all language constructs are expressions. There are also statements which cannot be used as expressions, such as
while. Assignments are also statements, not expressions.- extension module¶
(拡張モジュール) C や C++ で書かれたモジュールで、Python の C API を利用して Python コアやユーザーコードとやりとりします。
- f-string¶
'f'や'F'が先頭に付いた文字列リテラルは "f-string" と呼ばれ、これは フォーマット済み文字列リテラル の短縮形の名称です。 PEP 498 も参照してください。- file object¶
(ファイルオブジェクト) 基になるリソースに対して、ファイル向けの API(
read()やwrite()などのメソッド)を提供するオブジェクトです。 作成方法に応じて、ディスク上の実際のファイル、または別の種類の記憶装置や通信装置(標準入出力、メモリ内バッファ、ソケット、パイプなど)へのアクセスを仲介できます。 ファイルオブジェクトは、file-like オブジェクト や ストリーム とも呼ばれます。ファイルオブジェクトには実際には 3 種類あります: 生の バイナリーファイル、バッファされた バイナリーファイル、そして テキストファイル です。インターフェイスは
ioモジュールで定義されています。ファイルオブジェクトを作る標準的な方法はopen()関数を使うことです。- file-like object¶
file object と同義です。
- filesystem encoding and error handler¶
(ファイルシステムのエンコーディングとエラーハンドラ) オペレーティングシステムから受け取ったバイト列のデコードと、オペレーティングシステムに渡す Unicode のエンコードに Python が使用する、エンコーディングとエラーハンドラです。
ファイルシステムのエンコーディングは、128 未満のすべてのバイト値を正常にデコードできることを保証しなければなりません。 ファイルシステムのエンコーディングがこれを保証しない場合、API 関数が
UnicodeErrorを送出することがあります。sys.getfilesystemencoding()関数とsys.getfilesystemencodeerrors()関数を使うと、ファイルシステムのエンコーディングとエラーハンドラを取得できます。ファイルシステムのエンコーディングとエラーハンドラ は、Python の開始時に
PyConfig_Read()関数により設定されます。PyConfigのメンバーfilesystem_encodingとfilesystem_errorsを参照してください。ロケールエンコーディング も参照してください。
- finder¶
(ファインダ) インポートされているモジュールの loader の発見を試行するオブジェクトです。
ファインダには、
sys.meta_pathで使用する メタパスファインダ と、sys.path_hooksで使用する パスエントリファインダ の 2 種類があります。詳しくは、ファインダーとローダー と
importlibを参照してください。- floor division¶
(切り捨て除算) 一番近い整数に切り捨てる数学的除算。 切り捨て除算演算子は
//です。 例えば、11 // 4は2になり、それとは対称に浮動小数点数の真の除算では2.75が 返ってきます。(-11) // 4は-2.75を 小さい方に 丸める (訳注: 負の無限大への丸めを行う) ので-3になることに注意してください。 PEP 238 を参照してください。- free threading¶
(フリースレッディング) 同じインタープリタ内で、複数のスレッドが Python バイトコードを同時に実行できるスレッドモデルです。 一度に一つのスレッドだけが Python バイトコードを実行できる グローバルインタープリタロック とは対照的です。 PEP 703 を参照してください。
- free variable¶
(自由変数) 言語の実行モデル における正式な定義では、ある名前空間で使われる変数で、その名前空間のローカル変数ではないものを指します。 例については クロージャ変数 を参照してください。 実際の用法では、
codeobject.co_freevars属性の名前に由来して、クロージャ変数 の同義語として使われることもあります。- 関数¶
(関数) 呼び出し側に値を返す一連の文のことです。関数には0以上の 実引数 を渡すことが出来ます。実体の実行時に引数を使用することが出来ます。 仮引数、メソッド、関数定義 を参照してください。
- function annotation¶
(関数アノテーション) 関数のパラメータや返り値の annotation です。
関数アノテーションは通常、型ヒント に使用されます。 たとえば、次の関数は二つの
int型の引数を受け取り、int型の値を返すことを想定しています。def sum_two_numbers(a: int, b: int) -> int: return a + b
関数アノテーションの文法は 関数定義 の節で解説されています。
機能の説明がある variable annotation, PEP 484,を参照してください。また、アノテーションを利用するベストプラクティスとして アノテーションのベストプラクティス も参照してください。
- __future__¶
from __future__ import <feature>という future 文 は、コンパイラーに将来の Python リリースで標準となる構文や意味を使用して現在のモジュールをコンパイルするよう指示します。__future__モジュールでは、 feature のとりうる値をドキュメント化しています。このモジュールをインポートし、その変数を評価することで、新機能が最初に言語に追加されたのはいつかや、いつデフォルトになるか (またはなったか) を見ることができます:>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
- garbage collection¶
(ガベージコレクション) これ以降使われることのないメモリを解放する処理です。 Pythonは、参照カウントと、循環参照を検出し破壊する循環ガベージコレクタを使ってガベージコレクションを行います。 ガベージコレクタは
gcモジュールを使って操作できます。- ジェネレータ¶
Informally used to mean either a generator function or a generator iterator, depending on context. The formal terms generator function and generator iterator are uncommon in practice; "generator" alone is almost always sufficient.
- generator function¶
A function which returns a generator object. It looks like a normal function except that it contains
yieldexpressions for producing a series of values usable in afor-loop or that can be retrieved one at a time with thenext()function. See Yield 式.- generator iterator¶
An object created by a generator function or a generator expression.
Each
yieldtemporarily suspends processing, remembering the execution state (including local variables and pending try-statements). When the generator iterator resumes, it picks up where it left off (in contrast to functions which start fresh on every invocation).Generator iterators also implement the
send()method to send a value into the suspended generator, and thethrow()method to raise an exception at the point where the generator was paused. See ジェネレータ-イテレータメソッド.- generator expression¶
(ジェネレータ式) イテレータ を返す 式 です。 通常の式の後に、ループ変数と範囲を定義する
for節、そして省略可能なif節が続く形をしています。 このように組み合わせた式は、外側の関数に渡す値を生成します。>>> sum(i*i for i in range(10)) # 平方数 0, 1, 4, ... 81 の合計 285
- generic function¶
(ジェネリック関数) 異なる型に対し同じ操作をする関数群から構成される関数です。呼び出し時にどの実装を用いるかはディスパッチアルゴリズムにより決定されます。
See also the single dispatch glossary entry, the
@functools.singledispatchdecorator, and PEP 443.- generic type¶
(ジェネリック型) パラメータ化できる 型 で、通常は
listやdictのような コンテナクラス です。 型ヒント や アノテーション に使用されます。詳しくは、ジェネリックエイリアス型、PEP 483、PEP 484、PEP 585、
typingモジュールを参照してください。- GIL¶
global interpreter lock を参照してください。
- global interpreter lock¶
(グローバルインタプリタロック) CPython インタプリタが、一度に一つのスレッドだけが Python の バイトコード を実行することを保証するために使う仕組みです。 この仕組みは、
dictなどの重要な組み込み型を含むオブジェクトモデルを、並行アクセスに対して暗黙に安全にすることで、CPython の実装を単純にします。 インタプリタ全体をロックすると、マルチプロセッサマシンが可能にする並列性の多くを犠牲にする代わりに、インタプリタをマルチスレッド化しやすくなります。ただし、標準あるいは外部のいくつかの拡張モジュールは、圧縮やハッシュ計算などの計算の重い処理をするときに GIL を解除するように設計されています。また、I/O 処理をする場合 GIL は常に解除されます。
Python 3.13 以降では、ビルド設定
--disable-gilを使って GIL を無効にできます。 このオプションで Python をビルドした後は、-X gil=0を指定するか、環境変数PYTHON_GIL=0を設定してコードを実行する必要があります。 この機能により、マルチスレッドアプリケーションの性能を改善でき、マルチコア CPU を効率よく利用しやすくなります。 詳しくは PEP 703 を参照してください。- global state¶
Data that is accessible throughout a program, such as module-level variables, class variables, or C static variables in extension modules. In multi-threaded programs, global state shared between threads typically requires synchronization to avoid race conditions and data races.
- hash-based pyc¶
(ハッシュベース pyc ファイル) 正当性を判別するために、対応するソースファイルの最終更新時刻ではなくハッシュ値を使用するバイトコードのキャッシュファイルです。キャッシュされたバイトコードの無効化 を参照してください。
- hashable¶
(ハッシュ可能) オブジェクトの生存期間を通して変わらないハッシュ値を持ち(
__hash__()メソッドが必要です)、ほかのオブジェクトと比較できる(__eq__()メソッドが必要です)場合、そのオブジェクトは ハッシュ可能 です。 比較で等しいと判定されるハッシュ可能オブジェクトは、同じハッシュ値を持たなければなりません。ハッシュ可能なオブジェクトは辞書のキーや集合のメンバーとして使えます。辞書や集合のデータ構造は内部でハッシュ値を使っているからです。
Python のイミュータブルな組み込みオブジェクトは、ほとんどがハッシュ可能です。(リストや辞書のような) ミュータブルなコンテナはハッシュ不可能です。(タプルや frozenset のような) イミュータブルなコンテナは、要素がハッシュ可能であるときのみハッシュ可能です。 ユーザー定義のクラスのインスタンスであるようなオブジェクトはデフォルトでハッシュ可能です。 それらは全て (自身を除いて) 比較結果は非等価であり、ハッシュ値は
id()より得られます。- IDLE¶
Python の統合開発環境 (Integrated DeveLopment Environment)及び学習環境 (Learning Environment) です。IDLE --- Python のエディタとシェル は Python の標準的な配布に同梱されている基本的な機能のエディタとインタプリタ環境です。
- 永続オブジェクト (immortal)¶
永続オブジェクト は、PEP 683 で導入された CPython の実装の詳細です。
オブジェクトが永続である場合、その 参照カウント は決して変更されず、そのためインタープリタの実行中にメモリが解放されることはありません。 たとえば、CPython では
TrueとNoneが永続オブジェクトです。- immutable¶
An object with a fixed value. Immutable objects include numbers, strings and tuples. Such an object cannot be altered. A new object has to be created if a different value has to be stored. They play an important role in places where a constant hash value is needed, for example as a key in a dictionary. Immutable objects are inherently thread-safe because their state cannot be modified after creation, eliminating concerns about improperly synchronized concurrent modification.
- import path¶
path based finder が import するモジュールを検索する場所 (または path entry) のリスト。 import 中、このリストは通常
sys.pathから来ますが、サブパッケージの場合は親パッケージの__path__属性からも来ます。- importing¶
あるモジュールの Python コードが別のモジュールの Python コードで使えるようにする処理です。
- importer¶
- interactive¶
(対話型) Python には対話型インタープリタがあり、そのプロンプトで文や式を入力して、すぐに実行し、結果を見ることができます。
pythonを引数なしで起動するだけで利用できます(コンピュータのメインメニューで選択して起動することもできます)。 新しいアイデアを試したり、モジュールやパッケージを調べたりするための、とても強力な方法です(help(x)を思い出してください)。 対話モードについて詳しくは、対話モード を参照してください。- interpreted¶
Python はインタプリタ形式の言語であり、コンパイラ言語の対極に位置します。 (バイトコードコンパイラがあるために、この区別は曖昧ですが。) ここでのインタプリタ言語とは、ソースコードのファイルを、まず実行可能形式にしてから実行させるといった操作なしに、直接実行できることを意味します。インタプリタ形式の言語は通常、コンパイラ形式の言語よりも開発/デバッグのサイクルは短いものの、プログラムの実行は一般に遅いです。 対話的 も参照してください。
- interpreter shutdown¶
Python インタープリタは、シャットダウンを要求されると、モジュールや各種の重要な内部構造など、割り当てられたすべてのリソースを段階的に解放する特別な段階に入ります。 また、ガベージコレクタ を複数回呼び出します。 これにより、ユーザー定義のデストラクタや weakref コールバックのコードが実行されることがあります。 シャットダウン段階で実行されるコードでは、依存するリソースがすでに機能しなくなっている場合があるため(よくある例はライブラリモジュールや warnings の仕組みです)、さまざまな例外が発生することがあります。
インタープリタがシャットダウンする主な理由は
__main__モジュールや実行されていたスクリプトの実行が終了したことです。- iterable¶
(イテラブル) 要素を一つずつ返すことができるオブジェクトです。 例として、すべてのシーケンス型(
list、str、tupleなど)や、dict、ファイルオブジェクト のような一部のシーケンスでない型があります。 また、__iter__()メソッド、または シーケンス の意味論を実装する__getitem__()メソッドを定義した任意のクラスのオブジェクトも該当します。イテラブルは
forループや、シーケンスを必要とするほかの多くの場面(zip()、map()など)で使えます(訳注: ここでのシーケンスは、シーケンス型ではなく、単なる列という意味です)。 組み込み関数iter()にイテラブルオブジェクトを引数として渡すと、そのオブジェクトのイテレータが返されます。 このイテレータで、一連の値を一度だけ走査できます。 イテラブルを使う際には通常、iter()を呼び出したり、イテレータオブジェクトを自分で扱ったりする必要はありません。for文が自動的にこれを行い、一時的な無名の変数を作成して、ループの実行中にイテレータを保持します。 イテレータ、シーケンス、ジェネレータ も参照してください。- iterator¶
データの流れを表現するオブジェクトです。イテレータの
__next__()メソッドを繰り返し呼び出す (または組み込み関数next()に渡す) と、流れの中の要素を一つずつ返します。データがなくなると、代わりにStopIteration例外を送出します。その時点で、イテレータオブジェクトは尽きており、それ以降は__next__()を何度呼んでもStopIterationを送出します。イテレータは、そのイテレータオブジェクト自体を返す__iter__()メソッドを実装しなければならないので、イテレータは他の iterable を受理するほとんどの場所で利用できます。はっきりとした例外は複数の反復を行うようなコードです。 (listのような) コンテナオブジェクトは、自身をiter()関数にオブジェクトに渡したりforループ内で使うたびに、新たな未使用のイテレータを生成します。これをイテレータで行おうとすると、前回のイテレーションで使用済みの同じイテレータオブジェクトを単純に返すため、空のコンテナのようになってしまします。詳細な情報は Iterator Types にあります。
CPython 実装の詳細: CPython does not consistently apply the requirement that an iterator define
__iter__(). And also please note that free-threaded CPython does not guarantee thread-safe behavior of iterator operations.- key function¶
(キー関数) キー関数、あるいは照合関数とは、ソートや順序比較のための値を返す呼び出し可能オブジェクト(callable)です。例えば、
locale.strxfrm()をキー関数に使えば、ロケール依存のソートの慣習にのっとったソートキーを返します。Python の多くのツールはキー関数を受け取り要素の並び順やグループ化を管理します。
min(),max(),sorted(),list.sort(),heapq.merge(),heapq.nsmallest(),heapq.nlargest(),itertools.groupby()等があります。There are several ways to create a key function. For example. the
str.casefold()method can serve as a key function for case insensitive sorts. Alternatively, a key function can be built from alambdaexpression such aslambda r: (r[0], r[2]). Also,operator.attrgetter(),operator.itemgetter(), andoperator.methodcaller()are three key function constructors. See the Sorting HOW TO for examples of how to create and use key functions.- keyword argument¶
実引数 を参照してください。
- lambda¶
(ラムダ) 無名のインライン関数で、関数が呼び出されたときに評価される 1 つの 式 を含みます。ラムダ関数を作る構文は
lambda [parameters]: expressionです。- LBYL¶
「ころばぬ先の杖 (look before you leap)」 の略です。このコーディングスタイルでは、呼び出しや検索を行う前に、明示的に前提条件 (pre-condition) 判定を行います。 EAFP アプローチと対照的で、
if文がたくさん使われるのが特徴的です。In a multi-threaded environment, the LBYL approach can risk introducing a race condition between "the looking" and "the leaping". For example, the code,
if key in mapping: return mapping[key]can fail if another thread removes key from mapping after the test, but before the lookup. This issue can be solved with locks or by using the EAFP approach. See also thread-safe.- lexical analyzer¶
(字句解析器) トークナイザ の正式な名称です。 トークン を参照してください。
- list¶
A built-in Python sequence. Despite its name it is more akin to an array in other languages than to a linked list since access to elements is O(1).
- list comprehension¶
(リスト内包表記) シーケンス中の全てあるいは一部の要素を処理して、その結果からなるリストを返す、コンパクトな方法です。
result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]とすると、 0 から 255 までの偶数を 16進数表記 (0x..) した文字列からなるリストを生成します。if節はオプションです。if節がない場合、range(256)の全ての要素が処理されます。- lock¶
A synchronization primitive that allows only one thread at a time to access a shared resource. A thread must acquire a lock before accessing the protected resource and release it afterward. If a thread attempts to acquire a lock that is already held by another thread, it will block until the lock becomes available. Python's
threadingmodule providesLock(a basic lock) andRLock(a reentrant lock). Locks are used to prevent race conditions and ensure thread-safe access to shared data. Alternative design patterns to locks exist such as queues, producer/consumer patterns, and thread-local state. See also deadlock, and reentrant.- lock-free¶
An operation that does not acquire any lock and uses atomic CPU instructions to ensure correctness. Lock-free operations can execute concurrently without blocking each other and cannot be blocked by operations that hold locks. In free-threaded Python, built-in types like
dictandlistprovide lock-free read operations, which means other threads may observe intermediate states during multi-step modifications even when those modifications hold the per-object lock.- loader¶
(ローダー) モジュールをロードするオブジェクトです。
Loaderインターフェースを実装するには、exec_module()メソッドとcreate_module()メソッドを定義しなければなりません。 ローダーは通常、ファインダ から返されます。 次の項目も参照してください:- ロケールエンコーディング¶
Unix では、LC_CTYPE ロケールのエンコーディングです。
locale.setlocale(locale.LC_CTYPE, new_locale)で設定できます。Windows では、ANSI コードページ(例:
"cp1252")です。Android と VxWorks では、Python はロケールエンコーディングとして
"utf-8"を使用します。locale.getencoding()を使うと、ロケールエンコーディングを取得できます。ファイルシステムのエンコーディングとエラーハンドラ も参照してください。
- magic method¶
special method のくだけた同義語です。
- mapping¶
(マッピング) 任意のキー探索をサポートしていて、
collections.abc.Mappingかcollections.abc.MutableMappingの 抽象基底クラス で指定されたメソッドを実装しているコンテナオブジェクトです。例えば、dict,collections.defaultdict,collections.OrderedDict,collections.Counterなどです。- meta path finder¶
sys.meta_pathを検索して得られた finder. meta path finder は path entry finder と関係はありますが、別物です。meta path finder が実装するメソッドについては
importlib.abc.MetaPathFinderを参照してください。- metaclass¶
(メタクラス) クラスのクラスです。クラス定義は、クラス名、クラスの辞書と、基底クラスのリストを作ります。メタクラスは、それら 3 つを引数として受け取り、クラスを作る責任を負います。ほとんどのオブジェクト指向言語は(訳注:メタクラスの)デフォルトの実装を提供しています。Python が特別なのはカスタムのメタクラスを作成できる点です。ほとんどのユーザーに取って、メタクラスは全く必要のないものです。しかし、一部の場面では、メタクラスは強力でエレガントな方法を提供します。たとえば属性アクセスのログを取ったり、スレッドセーフ性を追加したり、オブジェクトの生成を追跡したり、シングルトンを実装するなど、多くの場面で利用されます。
詳細は メタクラス を参照してください。
- メソッド¶
(メソッド) クラス本体の中で定義された関数。そのクラスのインスタンスの属性として呼び出された場合、メソッドはインスタンスオブジェクトを第一 引数 として受け取ります (この第一引数は通常
selfと呼ばれます)。 関数 と ネストされたスコープ も参照してください。- method resolution order¶
(メソッド解決順序) メンバーの検索時に基底クラスを調べる順序です。 Python インタープリタがリリース 2.3 以降で使っているアルゴリズムの詳細については、The Python 2.3 Method Resolution Order を参照してください。
- module¶
(モジュール) Python コードの組織単位としてはたらくオブジェクトです。モジュールは任意の Python オブジェクトを含む名前空間を持ちます。モジュールは importing の処理によって Python に読み込まれます。
パッケージ を参照してください。
- module spec¶
モジュールをロードするのに使われるインポート関連の情報を含む名前空間です。
importlib.machinery.ModuleSpecのインスタンスです。モジュール仕様 も参照してください。
- MRO¶
method resolution order を参照してください。
- mutable¶
An object with state that is allowed to change during the course of the program. In multi-threaded programs, mutable objects that are shared between threads require careful synchronization to avoid race conditions. See also immutable, thread-safe, and concurrent modification.
- named tuple¶
"名前付きタプル" という用語は、タプルを継承していて、インデックスが付く要素に対し属性を使ってのアクセスもできる任意の型やクラスに応用されています。 その型やクラスは他の機能も持っていることもあります。
time.localtime()やos.stat()の返り値を含むいくつかの組み込み型は名前付きタプルです。 他の例はsys.float_infoです:>>> sys.float_info[1] # インデックスによるアクセス 1024 >>> sys.float_info.max_exp # 名前付きフィールドによるアクセス 1024 >>> isinstance(sys.float_info, tuple) # タプルの一種 True
名前付きタプルの一部は、上の例のような組み込み型です。 また、
tupleを継承して名前付きフィールドを定義する、通常のクラス定義からも名前付きタプルを作成できます。 このようなクラスは手作業で書くことも、typing.NamedTupleを継承したり、ファクトリ関数collections.namedtuple()を使ったりして作成することもできます。 後者の方法では、手書きの名前付きタプルや組み込みの名前付きタプルにはない場合がある、いくつかの追加メソッドも用意されます。- namespace¶
(名前空間) 変数が格納される場所です。名前空間は辞書として実装されます。名前空間にはオブジェクトの (メソッドの) 入れ子になったものだけでなく、局所的なもの、大域的なもの、そして組み込みのものがあります。名前空間は名前の衝突を防ぐことによってモジュール性をサポートする。例えば関数
builtins.openとos.open()は名前空間で区別されています。また、どのモジュールが関数を実装しているか明示することによって名前空間は可読性と保守性を支援します。例えば、random.seed()やitertools.islice()と書くと、それぞれモジュールrandomやitertoolsで実装されていることが明らかです。- namespace package¶
サブパッケージのコンテナとしてだけ機能する パッケージ です。 名前空間パッケージは物理的な実体を持たない場合があり、特に
__init__.pyファイルを持たない点で 通常のパッケージ と異なります。名前空間パッケージを使うと、個別にインストール可能な複数のパッケージが、共通の親パッケージを持てます。 それ以外の場合は、通常のパッケージ の使用を推奨します。
詳しくは、PEP 420 と 名前空間パッケージ を参照してください。
module を参照してください。
- native code¶
Code that is compiled to machine instructions and runs directly on the processor, as opposed to code that is interpreted or runs in a virtual machine. In the context of Python, native code typically refers to C, C++, Rust or Fortran code in extension modules that can be called from Python. See also extension module.
- nested scope¶
(ネストされたスコープ) 外側で定義されている変数を参照する機能です。例えば、ある関数が別の関数の中で定義されている場合、内側の関数は外側の関数中の変数を参照できます。ネストされたスコープはデフォルトでは変数の参照だけができ、変数の代入はできないので注意してください。ローカル変数は、最も内側のスコープで変数を読み書きします。同様に、グローバル変数を使うとグローバル名前空間の値を読み書きします。
nonlocalで外側の変数に書き込めます。- new-style class¶
(新スタイルクラス) 現在すべてのクラスオブジェクトに使われている種類のクラスの、以前の名称です。 古いバージョンの Python では、
__slots__、デスクリプタ、プロパティ、__getattribute__()、クラスメソッド、静的メソッドといった、Python の新しく多様な機能を使えるのは新スタイルクラスだけでした。- non-deterministic¶
Behavior where the outcome of a program can vary between executions with the same inputs. In multi-threaded programs, non-deterministic behavior often results from race conditions where the relative timing or interleaving of threads affects the result. Proper synchronization using locks and other synchronization primitives helps ensure deterministic behavior.
- object¶
(オブジェクト) 状態 (属性や値) と定義された振る舞い (メソッド) をもつ全てのデータ。もしくは、全ての 新スタイルクラス の究極の基底クラスのこと。
- optimized scope¶
(最適化されたスコープ) コードのコンパイル時に、対象となるローカル変数名をコンパイラが確実に把握できるスコープです。 これにより、その名前への読み書きを最適化できます。 関数、ジェネレータ、コルーチン、内包表記、ジェネレータ式のローカル名前空間は、この方法で最適化されます。 注意: インタープリタの最適化の大部分は、すべてのスコープに適用されます。 最適化されたスコープだけに適用されるのは、ローカル変数名と非ローカル変数名の集合が既知であることに依存する最適化だけです。
- package¶
(パッケージ) サブモジュールや、再帰的にサブパッケージを含むことができる Python の モジュール です。 厳密には、パッケージは
__path__属性を持つ Python モジュールです。regular package と namespace package を参照してください。
- parallelism¶
Executing multiple operations at the same time (e.g. on multiple CPU cores). In Python builds with the global interpreter lock (GIL), only one thread runs Python bytecode at a time, so taking advantage of multiple CPU cores typically involves multiple processes (e.g.
multiprocessing) or native extensions that release the GIL. In free-threaded Python, multiple Python threads can run Python code simultaneously on different cores.- parameter¶
(仮引数) 名前付の実体で 関数 (やメソッド ) の定義において関数が受ける 実引数 を指定します。仮引数には5種類あります:
位置またはキーワード: 位置 であるいは キーワード引数 として渡すことができる引数を指定します。 これはたとえば以下の foo や bar のように、デフォルトの仮引数の種類です:
def func(foo, bar=None): ...
位置専用: 位置によってのみ与えられる引数を指定します。位置専用の引数は関数定義の引数のリストの中でそれらの後ろに
/を含めることで定義できます。例えば下記の posonly1 と posonly2 は位置専用引数になります:def func(posonly1, posonly2, /, positional_or_keyword): ...
キーワード専用: キーワードによってのみ与えられる引数を指定します。キーワード専用の引数を定義できる場所は、例えば以下の kw_only1 や kw_only2 のように、関数定義の仮引数リストに含めた可変長位置引数または裸の
*の後です:def func(arg, *, kw_only1, kw_only2): ...
可変長位置: (他の仮引数で既に受けられた任意の位置引数に加えて) 任意の個数の位置引数が与えられることを指定します。このような仮引数は、以下の args のように仮引数名の前に
*をつけることで定義できます:def func(*args, **kwargs): ...
可変長キーワード: (他の仮引数で既に受けられた任意のキーワード引数に加えて) 任意の個数のキーワード引数が与えられることを指定します。このような仮引数は、上の例の kwargs のように仮引数名の前に
**をつけることで定義できます。
仮引数はオプションと必須の引数のどちらも指定でき、オプションの引数にはデフォルト値も指定できます。
用語集の 実引数 の項目、FAQ の 実引数と仮引数の違いは何ですか?、
inspect.Parameterクラス、関数定義 の節、および PEP 362 も参照してください。- per-object lock¶
A lock associated with an individual object instance rather than a global lock shared across all objects. In free-threaded Python, built-in types like
dictandlistuse per-object locks to allow concurrent operations on different objects while serializing operations on the same object. Operations that hold the per-object lock prevent other locking operations on the same object from proceeding, but do not block lock-free operations.- path entry¶
path based finder が import するモジュールを探す import path 上の1つの場所です。
- path entry finder¶
sys.path_hooksにある callable (つまり path entry hook) が返した finder です。与えられた path entry にあるモジュールを見つける方法を知っています。パスエントリーファインダが実装するメソッドについては
importlib.abc.PathEntryFinderを参照してください。- path entry hook¶
sys.path_hooksリスト内の呼び出し可能オブジェクトで、特定の パスエントリ 上でモジュールを見つける方法を知っている場合に、パスエントリファインダ を返すものです。- path based finder¶
- path-like object¶
(path-like オブジェクト) ファイルシステムパスを表します。 path-like オブジェクトは、パスを表す
strオブジェクトやbytesオブジェクト、またはos.PathLikeプロトコルを実装したオブジェクトのどれかです。os.PathLikeプロトコルをサポートしているオブジェクトはos.fspath()を呼び出すことでstrまたはbytesのファイルシステムパスに変換できます。os.fsdecode()とos.fsencode()はそれぞれstrあるいはbytesになるのを保証するのに使えます。 PEP 519 で導入されました。- PEP¶
Python Enhancement Proposal。PEP は、Python コミュニティに対して情報を提供する、あるいは Python の新機能やその過程や環境について記述する設計文書です。 PEP は、機能についての簡潔な技術的仕様と提案する機能の論拠 (理論) を伝えるべきです。
PEP は、主要な新機能を提案し、ある問題に対するコミュニティの意見を集め、Python に採用された設計上の決定を文書化するための、主要な仕組みとなることを意図しています。 PEP の著者には、コミュニティ内で合意を形成し、反対意見を文書化する責任があります。
PEP 1 を参照してください。
- portion¶
PEP 420 で定義されている、namespace package に属する、複数のファイルが (zipファイルに格納されている場合もある) 1つのディレクトリに格納されたもの。
- 位置引数 (positional argument)¶
実引数 を参照してください。
- provisional API¶
(暫定 API) 標準ライブラリの後方互換性保証から計画的に除外されたものです。そのようなインターフェースへの大きな変更は、暫定であるとされている間は期待されていませんが、コア開発者によって必要とみなされれば、後方非互換な変更 (インターフェースの削除まで含まれる) が行われえます。このような変更はむやみに行われるものではありません -- これは API を組み込む前には見落とされていた重大な欠陥が露呈したときにのみ行われます。
暫定 API であっても、後方互換性のない変更は「最終手段」とみなされます。 特定された問題に対しては、引き続き、後方互換性のある解決策を見つけるためにあらゆる努力を行います。
このプロセスにより、標準ライブラリは問題となるデザインエラーに長い間閉じ込められることなく、時代を超えて進化を続けられます。詳細は PEP 411 を参照してください。
- provisional package¶
provisional API を参照してください。
- Python 3000¶
Python 3.x リリースラインのニックネームです。(Python 3 が遠い将来の話だった頃に作られた言葉です。) "Py3k" と略されることもあります。
- Pythonic¶
他の言語で一般的な考え方で書かれたコードではなく、Python の特に一般的なイディオムに従った考え方やコード片。例えば、Python の一般的なイディオムでは
for文を使ってイテラブルのすべての要素に渡ってループします。他の多くの言語にはこの仕組みはないので、Python に慣れていない人は代わりに数値のカウンターを使うかもしれません:for i in range(len(food)): print(food[i])
これに対し、きれいな Pythonic な方法は:
for piece in food: print(piece)
- qualified name¶
(修飾名) モジュールのグローバルスコープから、そのモジュールで定義されたクラス、関数、メソッドへの、 "パス" を表すドット名表記です。 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'
モジュールへの参照で使われると、完全修飾名 (fully qualified name) はすべての親パッケージを含む全体のドット名表記、例えば
email.mime.textを意味します:>>> import email.mime.text >>> email.mime.text.__name__ 'email.mime.text'
- race condition¶
A condition of a program where the behavior depends on the relative timing or ordering of events, particularly in multi-threaded programs. Race conditions can lead to non-deterministic behavior and bugs that are difficult to reproduce. A data race is a specific type of race condition involving unsynchronized access to shared memory. The LBYL coding style is particularly susceptible to race conditions in multi-threaded code. Using locks and other synchronization primitives helps prevent race conditions.
- reference count¶
(参照カウント) あるオブジェクトに対する参照の数。参照カウントが0になったとき、そのオブジェクトは破棄されます。 永続 であり、参照カウントが決して変更されないために割り当てが解除されないオブジェクトもあります。参照カウントは通常は Python のコード上には現れませんが、 CPython 実装の重要な要素です。プログラマーは、 任意のオブジェクトの参照カウントを知るために
sys.getrefcount()関数を呼び出すことが出来ます。In CPython, reference counts are not considered to be stable or well-defined values; the number of references to an object, and how that number is affected by Python code, may be different between versions.
- regular package¶
伝統的な、
__init__.pyファイルを含むディレクトリとしての package。namespace package を参照してください。
- reentrant¶
A property of a function or lock that allows it to be called or acquired multiple times by the same thread without causing errors or a deadlock.
For functions, reentrancy means the function can be safely called again before a previous invocation has completed, which is important when functions may be called recursively or from signal handlers. Thread-unsafe functions may be non-deterministic if they're called reentrantly in a multithreaded program.
For locks, Python's
threading.RLock(reentrant lock) is reentrant, meaning a thread that already holds the lock can acquire it again without blocking. In contrast,threading.Lockis not reentrant - attempting to acquire it twice from the same thread will cause a deadlock.- REPL¶
"read–eval–print loop" の頭字語で、 対話型 インタープリターシェルの別名。
- __slots__¶
クラス内での宣言で、インスタンス属性の領域をあらかじめ定義しておき、インスタンス辞書を排除することで、メモリを節約します。これはよく使われるテクニックですが、正しく扱うには少しトリッキーなので、稀なケース、例えばメモリが死活問題となるアプリケーションでインスタンスが大量に存在する、といったときを除き、使わないのがベストです。
- sequence¶
(シーケンス) 整数インデックスを使った効率的な要素アクセスを
__getitem__()特殊メソッドでサポートし、シーケンスの長さを返す__len__()メソッドを定義する イテラブル です。 組み込みのシーケンス型には、list、str、tuple、bytesなどがあります。dictも__getitem__()と__len__()をサポートしますが、検索には整数ではなく任意の ハッシュ可能な キーを使うため、シーケンスではなくマッピングとみなされます。The
collections.abc.Sequenceabstract base class defines a much richer interface that goes beyond just__getitem__()and__len__(), addingcount(),index(),__contains__(), and__reversed__(). Types that implement this expanded interface can be registered explicitly usingregister(). For more documentation on sequence methods generally, see Common Sequence Operations.- set comprehension¶
(集合内包表記) イテラブルのすべて、または一部の要素を処理し、その結果からなる集合を返す簡潔な書き方です。
results = {c for c in 'abracadabra' if c not in 'abc'}は、文字列の集合{'r', 'd'}を生成します。 リスト、集合、辞書の表示 を参照してください。- single dispatch¶
(単一ディスパッチ) ジェネリック関数 のディスパッチの一形態で、一つの引数の型に基づいて実装を選びます。
- slice¶
(スライス) 一般に シーケンス の一部を含むオブジェクト。スライスは、添字表記
[]で与えられた複数の数の間にコロンを書くことで作られます。例えば、variable_name[1:3:5]です。角括弧 (添字) 記号はsliceオブジェクトを内部で利用しています。- soft deprecated¶
(ソフト非推奨) ソフト非推奨の API は、新しいコードでは使うべきではありませんが、既存のコードで使い続けても安全です。 その API のドキュメントの掲載とテストは続けられますが、それ以上の機能拡張は行われません。
通常の非推奨とは異なり、ソフト非推奨では API の削除は予定されておらず、警告も出力されません。
PEP 387: Soft Deprecation を参照してください。
- special method¶
(特殊メソッド) ある型に特定の操作、例えば加算をするために Python から暗黙に呼び出されるメソッド。この種類のメソッドは、メソッド名の最初と最後にアンダースコア 2 つがついています。特殊メソッドについては 特殊メソッド名 で解説されています。
- standard library¶
The collection of packages, modules and extension modules distributed as a part of the official Python interpreter package. The exact membership of the collection may vary based on platform, available system libraries, or other criteria. Documentation can be found at The Python standard library.
See also
sys.stdlib_module_namesfor a list of all possible standard library module names.- statement¶
(文) 文はスイート (コードの"ブロック") に不可欠な要素です。文は 式 かキーワードから構成されるもののどちらかです。後者には
if、while、forがあります。- static type checker¶
(静的型チェッカー) Python コードを読み込んで解析し、型の誤りなどの問題を探す外部ツールです。 型ヒント と
typingモジュールも参照してください。- stdlib¶
An abbreviation of standard library.
- steal¶
In Python's C API, "stealing" an argument means that ownership of the argument is transferred to the called function. The caller must not use that reference after the call. Generally, functions that "steal" an argument do so even if they fail.
See 参照カウントの詳細 for a full explanation.
- strong reference¶
(強参照) Python の C API で、オブジェクトへの参照のうち、それを保持するコードが所有するものです。 強参照は、参照を作成するときに
Py_INCREF()を呼び出すことで取得され、参照を削除するときにPy_DECREF()で解放されます。Py_NewRef()関数を使うと、オブジェクトへの強参照を作成できます。 通常は、参照が一つリークするのを避けるために、強参照のスコープを抜ける前に、その強参照に対してPy_DECREF()関数を呼び出さなければなりません。借用参照 も参照してください。
- synchronization primitive¶
A basic building block for coordinating (synchronizing) the execution of multiple threads to ensure thread-safe access to shared resources. Python's
threadingmodule provides several synchronization primitives includingLock,RLock,Semaphore,Condition,Event, andBarrier. Additionally, thequeuemodule provides multi-producer, multi-consumer queues that are especially useful in multithreaded programs. These primitives help prevent race conditions and coordinate thread execution. See also lock.- text encoding¶
Python の文字列は、Unicode コードポイントの列(
U+0000--U+10FFFFの範囲)です。 文字列を保存または転送するには、バイト列としてシリアライズする必要があります。文字列をバイト列にシリアライズすることを「エンコード」、バイト列から文字列を復元することを「デコード」といいます。
文字列をシリアライズするための コーデック はさまざまあり、総称して「テキストエンコーディング」と呼ばれます。
- text file¶
(テキストファイル)
strオブジェクトを読み書きできる ファイルオブジェクト です。 テキストファイルは、多くの場合、実際にはバイト指向のデータストリームにアクセスし、テキストエンコーディング を自動的に処理します。 例として、テキストモード('r'または'w')で開いたファイル、sys.stdin、sys.stdout、io.StringIOのインスタンスがあります。bytes-like オブジェクト を読み書きできるファイルオブジェクトについては、 バイナリファイル も参照してください。
- thread-safe¶
A module, function, or class that behaves correctly when used by multiple threads concurrently. Thread-safe code uses appropriate synchronization primitives like locks to protect shared mutable state, or is designed to avoid shared mutable state entirely. In the free-threaded build, built-in types like
dict,list, andsetuse internal locking to make many operations thread-safe, although thread safety is not necessarily guaranteed. Code that is not thread-safe may experience race conditions and data races when used in multi-threaded programs.- トークン¶
字句解析器 (トークナイザ とも呼ばれます)が生成する、ソースコードの小さな単位です。 名前、数値、文字列、演算子、改行などは、トークンで表されます。
tokenizeモジュールは、Python の字句解析器を公開します。tokenモジュールは、さまざまな種類のトークンについての情報を含みます。- triple-quoted string¶
(三重クォート文字列) クォート記号(")またはアポストロフィー(')を三つ並べて囲んだ文字列です。 一重クォート文字列にない機能を提供するわけではありませんが、いくつかの理由で便利です。 文字列の中にシングルクォートやダブルクォートをエスケープせずに含めることができ、行継続文字を使わずに複数行にまたがることもできるため、ドキュメンテーション文字列を書く際に特に役立ちます。
- type¶
(型) Python オブジェクトの型は、それがどのような種類のオブジェクトかを決めます。 すべてのオブジェクトには型があります。 オブジェクトの型には
__class__属性としてアクセスでき、type(obj)でも取得できます。- type alias¶
(型エイリアス) 型の別名で、型を識別子に代入して作成します。
型エイリアスは 型ヒント を単純化するのに有用です。例えば:
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
- type hint¶
(型ヒント) 変数、クラス属性、関数のパラメータや返り値の期待される型を指定する annotation です。
型ヒントは省略可能で、Python によって強制されませんが、静的型チェッカー に役立ちます。 IDE によるコード補完やリファクタリングにも役立ちます。
グローバル変数、クラス属性、関数で、ローカル変数でないものの型ヒントは
typing.get_type_hints()で取得できます。- universal newlines¶
テキストストリームの解釈法の一つで、以下のすべてを行末と認識します: Unix の行末規定
'\n'、Windows の規定'\r\n'、古い Macintosh の規定'\r'。利用法について詳しくは、 PEP 278 と PEP 3116 、さらにbytes.splitlines()も参照してください。- variable annotation¶
(変数アノテーション) 変数あるいはクラス属性の annotation 。
変数あるいはクラス属性に注釈を付けたときは、代入部分は任意です:
class C: field: 'annotation'
変数アノテーションは通常は 型ヒント のために使われます: 例えば、この変数は
intの値を取ることを期待されています:count: int = 0
変数アノテーションの構文については 注釈付き代入文 (annotated assignment statements) 節で解説しています。
機能の説明がある function annotation, PEP 484 , PEP 526 を参照してください。また、アノテーションを利用するベストプラクティスとして アノテーションのベストプラクティス も参照してください。
- virtual environment¶
(仮想環境) 協調的に切り離された実行環境です。これにより Python ユーザとアプリケーションは同じシステム上で動いている他の Python アプリケーションの挙動に干渉することなく Python パッケージのインストールと更新を行うことができます。
venvを参照してください。- virtual machine¶
(仮想マシン) 完全にソフトウェアにより定義されたコンピュータ。 Python の仮想マシンは、バイトコードコンパイラが出力した バイトコード を実行します。
- walrus operator¶
A light-hearted way to refer to the assignment expression operator
:=because it looks a bit like a walrus if you turn your head.- Zen of Python¶
(Pythonの悟り) Python を理解し利用する上での導きとなる、Python の設計原則と哲学をリストにしたものです。対話プロンプトで "
import this" とするとこのリストを読めます。