質問

「バイトコードインタープリター」の概念が実際にはわかりません。 CPythonのコンテキストで。誰かが全体像に光を当てることができますか?

CPythonがpycファイル(バイトコードファイル)をコンパイルして実行するということですか?次に、pyファイルをpycファイルにコンパイルするものは何ですか?また、JythonはCPythonとどう違いますか(異なる言語で実装されていることを除く)。

また、PythonはC ++の解釈であると読んでいます。これは正しいです?それはどういう意味ですか?

私はまだPythonが初めてなので、愚かな質問をしても許してくれます... ありがとうございます!

役に立ちましたか?

解決

CPythonはCでのPythonの実装です。これは最初の実装であり、Pythonについて話すときに人々が意味する主なものです。 .pyファイルを.pycファイルにコンパイルします。 .pycファイルにはバイトコードが含まれています。 CPython実装は、これらのバイトコードも解釈します。 CPythonはC ++ではなく、Cです。

.pyから.pycへのコンパイルは、必要に応じて透過的に行われます。 .pyファイルを実行すると、必要に応じて最初に.pycファイルにコンパイルされ、次に.pycファイルが解釈されます。

Jythonは、Cの代わりにJavaで実装されることに加えて、.pyファイルを.classファイルにコンパイルしてJVMで実行できるため、異なります。

他のヒント

まず:CPythonがバイトコードインタープリターであるという事実は、Pythonのユーザーとしては重要ではありません。先に進んでコードを記述します。コードがどのように実行されるか心配する必要はありません。

したがって、質問に答えて好奇心を満たすために、次のことが行われます。CPythonはpythonソースコードを読み取り、それを.pycファイルに格納されているpythonバイトコードにコンパイルします。次に、バイトコードインタープリターを使用してそのコードを実行します。この設計により、Pythonの解析と実行が分離され、インタープリターの両方の部分がよりシンプルになります。

Jythonは前半分にすぎません。Pythonソースを読み取り、Javaバイトコードを出力します。Javaバイトコードは、JVMによって解釈されます。 CPythonと同じアーキテクチャですが、2つの注目すべき違いがあります。1つ:Javaバイトコードは標準化および文書化されていますが、CPythonバイトコードはPythonの内部と見なされ、いつでも変更できます。 2:JVMはCPythonインタープリターよりもはるかに複雑です。 JVMには世界で最も先進的なJITエンジンの1つがありますが、CPythonインタープリターは非常に単純です。

CPythonは、バイトコードコンパイラーであり、インタープリター(仮想マシン)でもあります。

既存のプリコンパイラファイル(.pyc)が存在しないかどうかを自動的に検出し、コードをコンパイルして保存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top