はい、コンパイルされた言語と解釈された言語の両方です。 では、なぜそれを一般的にインタープリタ型言語と呼ぶのでしょうか?
それがどのようにコンパイルされ解釈されているかを見てください。
まず第一に、あなたがJavaの世界から来た方なら、私の答えをもっと気に入っていただけると思います。
Javaでは、ソースコードは最初にjavacコンパイラを介してバイトコードに変換され、次にJVMに送られます(実行目的でネイティブコードを生成します)。ここで、Javaをコンパイル済み言語として呼び出すことをお見せします。これは、Javaが実際にソースコードをコンパイルし、.classファイル(バイトコードのみ)を提供することがわかるためです。
javac Hello.java -------> Hello.classファイルを生成します
java Hello --------> 実行目的でバイトコードをJVMに送信する
同じことがpythonでも発生します。つまり、最初にソースコードがコンパイラを介してバイトコードに変換され、次にPVMに送られます(実行目的でネイティブコードを生成します)。ここで、通常はPythonをインタープリタ言語として呼び出すことをお見せします。コンパイルは舞台裏
で行われるため、Pythonコードを実行するときに次のようになります。
python Hello.py ------->コードを直接実行し、コードが構文的に正しいことを証明する出力を確認できます
@ python Hello.pyそれは直接実行されるように見えますが、実際には最初に、インタープリターによって解釈されるバイトコードを生成して、実行目的のネイティブコードを生成します。
CPython-コンパイルと解釈の両方の責任を負います。
詳細が必要な場合は、以下の行を調べてください。
私がいることを言及したようにCPythonのは、ソースコードをコンパイルしますが、実際のコンパイルがの助けを借りて起こるcythonその後、解釈はの助けを借りて起こるCPythonの
次に、JavaとPythonにおけるJust-In-Timeコンパイラの役割について少し説明します。
JVMには、実行用のネイティブマシンコードを取得するためにバイトコードを1行ずつ解釈するJavaインタープリターが存在しますが、Javaバイトコードがインタープリターによって実行される場合、実行は常に遅くなります。それで、解決策は何ですか?解決策はジャストインタイムコンパイラーであり、解釈するよりもはるかに速く実行できるネイティブコードを生成します。一部のJVMベンダーはJavaインタープリターを使用し、一部はJust-In-Timeコンパイラーを使用しています。参照:ここをクリック
Pythonでは、インタープリターを回避して高速実行を実現するには、CPythonではなく別のPython実装(PyPy)を使用します。
PyPyを含むpythonの他の実装については、ここをクリックしてください。