|
| |
| 作者 | グイド・ヴァンロッサム |
|---|---|
| 開発元 | Python Software Foundation |
| 初版 | 1991年4月 |
| 最新版 |
3.13.3
/ 2025年4月8日 |
| 最新評価版 |
3.14.0a7
/ 2025年4月8日 |
| リポジトリ | |
| プログラミング 言語 | C言語 |
| プラットフォーム | 42のプラットフォーム 本文参照 |
| 種別 | Python Programming Language Interpreter |
| ライセンス | Python Software Foundation License |
| 公式サイト |
www |
CPython は、Pythonのリファレンス実装である。CPython は C言語で記述されている。CPython 以外に、製品としての品質をもつ Python 実装はJava で記述された Jython、共通言語ランタイム 用に記述された IronPython の2つがあり、またいくつかの実験的な実装もある。Classic Python というバクロニムが、'C' の別の意味として提案されている。
CPython はバイトコードインタプリタである。C を含むいくつかの言語での外部関数インターフェイスを持っており、Python 以外の言語の言語バインディングを明示的に書く場合に使用される。
CPython における
拡張モジュールは Python 言語の仕様ではなく CPython ランタイムの仕様であるため、拡張モジュールは他のランタイムでは一般に機能しない。
Cython は拡張モジュールを活用している代表的なコンパイラである。
PEP 11にはPython Software FoundationのCPythonではサポートされていないプラットフォームの一覧がある。これらのプラットフォームは現在でも非公式の移植版でサポートされている。下記参照。
Python Software Foundationの公式版の CPython に統合されていない移植版が存在する。
移植版には、PSP 用のグラフィックスやサウンド API や S60 用の SMS やカメラ API などのプラットフォーム固有の機能のための拡張モジュールが提供されることが多い。
マルチプロセッサのコンピュータで CPython を用いる際の大きな問題は、各 CPython インタプリタのプロセスが持つグローバルインタプリタロック(GIL)であり、これがプロセス内の Python スレッドの並列性を損なってしまう。
マルチプロセッサ環境で完全な並列性を実現するためには別の CPython プロセスを動作させる必要がある。一般的にプロセス間の通信を実現することは困難な作業となるが、CPythonでは標準ライブラリを使い容易に実現させることが可能である。CPython から GIL を取り除くことについては常に議論が行われている。
Pythonにおけるバイトコード(英: bytecode)はCPythonが内部的に利用する中間表現である。
CPythonではPythonコードをバイトコードへコンパイルし、このバイトコードをインタープリタによって実行する。コードからバイトコードへのコンパイル結果は .pyc ファイルとしてキャッシュされ、二度目以降の実行時にはリコンパイル無しにバイトコードが実行される。
バイトコードはあくまでCPythonの内部表現/実装詳細であり、CPythonのバージョン間や他Python実行環境との互換性は保証されない。
拡張モジュール (extension module) を使うと ... 新しい組み込みオブジェクトの実装、そして全ての C ライブラリ関数とシステムコールに対する呼び出し、ができるようになります。“1. C や C++ による Python の拡張”. Python 3.13.4 documentation. 2025年6月11日閲覧。
C 拡張のインターフェイスは CPython に固有のものであり、これによる拡張モジュールはほかの Python 実装では動作しません。“1. C や C++ による Python の拡張”. Python 3.13.4 documentation. 2025年6月11日閲覧。
[Cython] is a programming language that makes writing C extensions for the Python language“Cython - an overview”. Cython 3.1.2 documentation. 2025年6月11日閲覧。
.pyc files so that executing the same file is faster the second time (recompilation from source to bytecode can be avoided)." Python. bytecode - Glossary. Python 3.11.5 Documentation. 2023-09-01閲覧.dis — Disassembler for Python bytecode. Python 3.11.5 Documentation. 2023-09-01閲覧.