Python では、ソース コードはバイトコード と呼ばれる下位レベルの形式にコンパイルされます。バイトコードは、CPU の命令セットに似た一連の命令です。ただし、バイトコードは CPU によって直接実行されるのではなく、仮想マシン内で実行されます。もちろん、ここでの仮想マシンはオペレーティング システム環境全体を模倣するものではなく、バイトコード実行のための環境を提供するだけです。
Python コードの小さな部分とそれに対応するバイトコードを見てみましょう バイトコードの内容を読んだ後、f' ... ' このフォーマットされた文字列形式の動作原理は、内部の文字列を一連のリテラル文字列と変数に変換し、数値を使用してそれらを接続することです。 dis は Python 標準ライブラリの逆アセンブリ モジュールで、Python コードのバイトコード情報を表示できます。前述のバイトコードを実行する仮想マシンは、Python 自体を含む任意の言語で実装できます。ご興味がございましたら、GitHub でこのプロジェクト nedbat/byterun をチェックしてください。このプロジェクトは学習には使用できますが、運用環境には適していません。 しかし、Python を実行すると、コンパイルのプロセスをまったく感じることができません。コンパイラが何と呼ばれるかは表示されず、単純に .py ファイルを実行するだけで、必要に応じて自動的にコンパイルが行われます。これは JAVA とは異なります。JAVA コードを作成して実行する場合は、そのコードを手動で .class ファイルにコンパイルして実行する必要があります。 JAVA がコンパイル言語と呼ばれ、Python がインタープリタ言語と呼ばれるのはこのためです。しかし実際には、どちらの言語も実行時にまずバイトコードにコンパイルされてから、実行のために仮想マシンに渡されます。 Python には、対話型コマンド ラインという重要な機能もあります。 Python ステートメントを 1 行入力し、すぐに Enter キーを押して実行できます。実はこの処理でも、Pythonはまずバイトコードに変換されてから実行されます。この対話型コマンド ライン機能は、多くのコンパイル言語では利用できません。また、コンパイラへの明示的な呼び出しがないため、多くの人は Python ソース ファイルを実行するプログラムを Python インタープリタと呼びます。 比較的単純ですが、それでも追加したいと思います。 C や JAVA などの一部のコンパイル言語にも対話型のコマンド ラインがありますが、これらの言語の焦点はそこにはありません。 JAVA は最初にバイトコードにコンパイルされてから実行されましたが、その後、ジャストインタイム コンパイル テクノロジ (JIT) を使用して、C と同様にマシン コードに直接コンパイルできるようになりました。 上記の説明からわかるように、解釈と編集は完全に分離することはできません。既存のプログラミング言語を分類するためにいくつかの単語を使用したいと思うことがよくありますが、実際にはこれを行うのは難しすぎます。 最後に注意すべきことは、コードがどのように実行されるかは言語の実装の問題であり、言語の機能ではないということです。上記では Python について説明していますが、実際には CPython についての説明です。 CPython はインタプリタであり、インタプリタが C で記述されているためそう呼ばれます。C は Python のデフォルトのインタプリタでもあります。もちろん、他にも多くのインタプリタがあり、例えば、PyPy も JIT 技術を使用したインタプリタで、CPython に比べて実行速度が大幅に向上しています。 タイトルの質問に戻りますが、Python がインタープリタ型言語と呼ばれる理由は、明示的にコンパイル操作を呼び出さず、よりインタープリタ型の特性を示すためです。しかし、実際にはコンパイルというものが存在し、それをどのようにコンパイルするかは言語の実装、つまりインタプリタの設計に依存します。 Python 関連の技術記事の詳細については、Python チュートリアル 列にアクセスして学習してください。
以上がPythonをコンパイルする必要はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。