pythonは解釈された言語ですか

**Pythonは解釈された言語ですか? ****

Pythonは解釈された言語であり、*。pycファイルの存在を知るまで私はそれを信じていました。

解釈された言語の場合、生成された* .pycファイルは何ですか? cはcompiledの略語である必要があります!

Pythonを学ぶ他の人がこの文に誤解されるのを防ぐために、この記事でこの問題を明確にし、いくつかの基本的な概念を明確にします。 Pythonは完全に解釈された言語ではありません。コンパイルされます。最初に、ソースpyファイルがpycまたはpyoにコンパイルされ、次にpython仮想マシンによって実行されます。pyファイルと比較すると、pycおよびpyoへのコンパイルは本質的にpyとは異なります。大きな違いです。このモジュールの読み込み速度は向上しましたが、コードの実行速度は向上していません。通常の状況では、pycファイルをアクティブにコンパイルする必要はありません。ドキュメントには、インポートモデルが呼び出されている限り、model.pyが最初にpycにコンパイルされると記載されています。次にロードします

解釈およびコンパイルされた言語

コンピューターは高レベルの言語を認識できないため、高レベルの言語プログラムを実行するときは、高レベルの言語をコンピューターが理解できる機械言語に変換するプロセスに従事する「翻訳者」が必要です。このプロセスは2つのカテゴリに分けられます。1つはコンパイルで、もう1つは解釈です。

プログラムが実行される前に、コンパイルされた言語は、コンパイラを介してプログラムに対してコンパイルプロセスを実行し、プログラムを機械言語に変換します。実行時に変換する必要はなく、直接実行するだけです。最も典型的な例はC言語です。

解釈される言語にはこのコンパイルプロセスはありません。代わりに、プログラムの実行時に、インタープリターはプログラムを1行ずつ解釈し、直接実行します。最も一般的な例はRubyです。

上記の例を通じて、解釈された言語とコンパイルされた言語の長所と短所を要約できます。コンパイルされた言語は、プログラムの実行前にプログラムをすでに「翻訳」しているため、実行時に「翻訳」が省略されているためです。 「プロセスなので、効率は比較的高いです。しかし、一般化することはできません。一部の解釈言語は、インタープリターの最適化を通じてプログラムを翻訳するときにプログラム全体を最適化することもできるため、効率はコンパイルされた言語に近くなりますが、コンパイルされた言語を超えることはできません。

さらに、Javaなどの仮想マシンに基づく言語の台頭により、言語を純粋に解釈された言語とコンパイルされた言語に分割することはできません。

例としてJavaを使用すると、Javaは最初にコンパイラによってバイトコードファイルにコンパイルされ、次に実行時にインタプリタによってマシンファイルに解釈されます。つまり、Javaはコンパイルされてから解釈される言語であると言えます。

**Python **とは正確には何ですか

実際、PythonもJava / C#と同様に、仮想マシンに基づく言語です。まず、表面上で実行されているPythonプログラムのプロセスを理解しましょう。

コマンドラインでpythonhello.pyと入力すると、実際にPythonの「インタープリター」がアクティブになり、「インタープリター」に通知します。これで作業を開始できます。しかし、「解釈」の前に実行される最初の作業は、コンパイルであるJavaと同じです。

**Python **の実行プロセスについて簡単に説明してください

この問題について説明する前に、PyCodeObjectとpycファイルの2つの概念について説明しましょう。

当然のことながら、ハードディスクで見たpycは言うまでもありませんが、実際にはPyCodeObjectはPythonコンパイラの結果です。最初にそれを簡単に知ることができ、見下ろし続けることができます。

pythonプログラムの実行中、コンパイルの結果はメモリにあるPyCodeObjectに保存されます。Pythonプログラムの実行時に、PythonインタープリターはPyCodeObjectをpycファイルに書き戻します。

pythonプログラムを2回実行すると、最初にプログラムはハードディスク内のpycファイルを探します。見つかった場合は、最初に.pycファイルと.pyファイルの最終変更時刻を判断します。.pycファイルの変更時刻がそれより後の場合。 pyファイル。.pyファイルのソースコードが変更されていないことを示します。直接ロードするか、上記のプロセスを繰り返します。

したがって、このようにPyCodeObjectファイルとpycファイルを見つける必要があります。pycファイルは実際にはPyCodeObjectの永続的なストレージメソッドであると言います。

ナレッジポイントの補足:

実際、Pythonプログラムの実行プロセスを理解することは、Pythonプログラマーを含むほとんどのプログラマーにとってほとんど重要ではありません。本当に理にかなっているのは、Pythonインタープリターの実践から何を学ぶことができるかということです。そういうこともあると思います。いくつかのポイント:

A.実際、Pythonがpycファイルとして保存されるかどうかは、キャッシュシステムを設計したときと同じです。キャッシュに投入する価値があるものと、キャッシュに投入する価値がないものについて慎重に考えることができます。

B.時間のかかるPythonスクリプトを実行する場合、一部のプログラムの実行時間をわずかに短縮するにはどうすればよいですか。つまり、モジュールをメインモジュールから分離します。 (これは多くの場合ボトルネックではありませんが)

C.ソフトウェアシステムを設計する場合、再利用可能なものと再利用不可能なものを別々に扱う必要がありますか?これはソフトウェア設計原則の重要な部分です。

D.キャッシュシステム(または他のシステム)を設計する場合、プログラムの有効期限を回避するにはどうすればよいですか?実際、Pythonインタープリターは、特に一般的で効果的なソリューションも提供します。

これまでのところ、pythonが解釈言語であるかどうかに関するこの記事が紹介されています。関連するpythonが解釈言語である場合は、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。 !

Recommended Posts

pythonは解釈された言語ですか?
pythonは解釈された言語ですか
python言語のアルゴリズムはありますか
Pythonはクロスプラットフォームの言語コードです
python言語は無料ですか、それとも有料ですか?
Pythonのすべてがオブジェクトです
Python 3.9が登場!
Pythonの匿名関数とは何ですか
2.3Python言語の基盤
なぜpythonが人気なのか
Pythonは短いクロール音楽です
Pythonはゆっくりと衰退しています
エンタープライズ言語に対するpythonの利点は何ですか
Pythonは短世界の流行マップです
Pythonは短い_SVMテストです
pythonコードは大文字と小文字を区別しますか
pythonのイントロスペクションとは何ですか
pythonのオブジェクト指向とは何ですか
Python変数スコープとは
なぜpythonを接着剤言語と呼ぶのか
pythonのリスト内包表記とは何ですか
pythonに関数のオーバーロードはありますか
Pythonのディープコピーは完璧ではありません
Pythonの判断は空のインスタンス共有です
Pythonの用途は何ですか
pythonは主流の言語になることができますか?
pythonはデータマイニングに適していますか
CentOS7はPython言語開発環境を構成します
pythonクローラーは簡単に習得できますか