567

Python と CPython (Jython,IronPython)についてのこの大騒ぎは何ですか、私にはわかりません:

python.orgは、CPython について次のように述べています。

Python の「伝統的な」実装 (ニックネーム CPython)

さらに別のスタックオーバーフローの質問では、次のことが言及されています。

CPython は、C で記述された Python のデフォルトのバイトコード インタープリターです。

正直なところ、これらの両方の説明が実際に何を意味するのかわかりませんが、CPython を使用すると、サンプルの Python コードを実行すると、それが C 言語にコンパイルされ、C であるかのように実行されます。コード

では、CPython とは正確には何であり、Python と比較した場合の違いは何ですか?おそらく Python よりも CPython を使用する必要がありますか?もしそうなら、その利点は何ですか?

4

10 に答える 10

848

では、CPython とは何ですか?

CPython はオリジナルのPython 実装です。Python.org からダウンロードした実装です。人々はこれを CPython と呼んで、後に他の Python 実装と区別し、言語エンジンの実装を Pythonプログラミング言語自体と区別します。

後半は混乱の元です。Python-the-language を、Python コードを実行するものから分離しておく必要があります。

CPythonはたまたまC で実装されています。これは実装の詳細にすぎません。CPython は Python コードを (透過的に) バイトコードにコンパイルし、評価ループでそのバイトコードを解釈します。

CPython は、新機能を実装した最初のものでもあります。Python-the-language 開発では、CPython をベースとして使用します。他の実装が続きます。

Jythonなどはどうですか?

JythonIronPython、およびPyPyは、Python プログラミング言語の現在の「その他」の実装です。これらは、それぞれ Java、C#、および RPython (Python のサブセット) で実装されています。Jython は Python コードをJavaバイトコードにコンパイルするため、Python コードを JVM で実行できます。IronPython を使用すると、 Microsoft CLRで Python を実行できます。また、PyPy は Python (のサブセット) で実装されているため、CPython よりも高速に Python コードを実行できます。:-)

実際にCにコンパイルする

そのため、 CPython はPython コードを単独で C に変換しません。代わりに、インタープリター ループを実行します。Python 風のコードを C に変換するプロジェクトがあり、それCythonと呼ばれます。Cython は Python 言語にいくつかの拡張機能を追加し、コードを C 拡張機能 ( CPython インタープリターにプラグインされるコード) にコンパイルできるようにします。

于 2013-06-16T07:02:38.503 に答える
118

言語と実装を区別する必要があります。Pythonは言語であり、

ウィキペディアによると、「プログラミング言語は、計算またはアルゴリズムの仕様であるプログラムを記述するための表記法です」。これは、コードを記述するための単純なルールと構文であることを意味します。これとは別に、ほとんどの場合、実際のインタープリターまたはコンパイラーであるプログラミング言語の実装があります。

Pythonは言語です。CPython は C での Python の実装です。Jython は Java での実装です。

要約すると、あなたはすでに CPython を使用しています (ここからダウンロードした場合)。

于 2013-06-16T07:07:24.023 に答える
35

この記事では、Python のさまざまな実装の違いを徹底的に説明します。記事のように:

最初に気付くのは、'Python' がインターフェースであるということです。Python が何をすべきか、どのように振る舞うべきか (他のインターフェースと同様) の仕様があります。そして、複数の実装があります (他のインターフェースと同様)。

認識すべき 2 番目のことは、「解釈済み」と「コンパイル済み」は実装のプロパティであり、インターフェイスではないということです。

于 2014-02-20T17:25:00.987 に答える
28

Python は言語であり、プログラムを作成するために使用できる一連の規則です。この言語にはいくつかの実装があります。

どのような実装を採用しても、ほとんど同じことを行います。つまり、プログラムのテキストを取得して解釈し、その命令を実行します。コードを C やその他の言語にコンパイルするものはありません。

CPython は、C で記述された元の実装です (「CPython」の「C」の部分は、Python インタープリター自体を記述するために使用された言語を指します)。

Jython は同じ言語 (Python) ですが、Java を使用して実装されています。

IronPython インタープリターは C# で作成されました。

PyPy (Python で書かれた Python インタープリター) もあります。あなたの選択をしてください:)

于 2013-06-16T07:06:24.630 に答える
10

implementationPython コードがどのように実装されるかではなく、Python を実装するために使用された言語を意味します。CPython を使用する利点は、C ランタイムが利用できることと、C/C++ と簡単に統合できることです。

したがって、CPython はもともと を使用して実装されてCいました。Python が Java (JYthon) または .NET ランタイム (IronPython) を活用できるようにする元の実装へのフォークが他にもありました。

使用する実装に基づいて、ライブラリの可用性が異なる場合があります。たとえば、Ctypes は Jythonでは使用できないため、ctypes を使用するライブラリは Jython では機能しません。同様に、Java クラスを使用する場合、CPython から直接行うことはできません。接着剤 (JEPP) が必要か、Jython (Python の Java 実装) を使用する必要があります。

于 2013-06-16T07:05:31.667 に答える
8

Global Interpreter Lockのため、CPython は実際にはマルチスレッドをサポートしていません (サポートしていますが、最適ではありません) 。また、再帰のための最適化メカニズムがなく、他の実装やライブラリが埋めようとする他の多くの制限があります。

python wiki のこのページを見てください。

このページのコード スニペットを見てください。インタープリターとは何かがよくわかります。

于 2014-01-01T21:11:05.810 に答える
1

プログラミング言語の実装は、コンピューター プログラムを実行するためのシステムです。

プログラミング言語の実装には、次の 2 つの一般的なアプローチがあります。

  • 解釈: インタープリターは、ある言語でプログラムを入力として受け取り、その言語で書かれたアクションをあるマシンで実行します。
  • コンパイル: コンパイラは、ある言語のプログラムを入力として受け取り、そのプログラムを他の言語に変換します。これは、別のインタープリターまたは別のコンパイラへの入力として機能する場合があります。

Pythonは、 1991 年にGuido van Rossumによって作成されたインタープリター型の高水準プログラミング言語です。

CPythonは Python コンピューティング言語のリファレンス バージョンで、Guido van Rossumによって作成された C で書かれています。

Python 実装のその他のリスト

ソース

于 2018-08-24T03:08:04.753 に答える