回答:
.py
:これは通常、作成した入力ソースコードです。.pyc
:これはコンパイルされたバイトコードです。モジュールをインポートすると、Pythonは*.pyc
バイトコードを含むファイルを作成して、後で簡単に(そして高速に)インポートできるようにします。.pyo
:これは、*.pyc
最適化(-O
)フラグを使用して作成されたファイルにPython 3.5以前で使用されていたファイル形式です。(下の注を参照).pyd
:これは基本的にWindows dllファイルです。http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllまた、.pyc
vsの詳細については.pyo
、http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.htmlをご覧ください(以下の重要な部分をコピーしました)。
- -Oフラグを指定してPythonインタープリターを呼び出すと、最適化されたコードが生成され、「。pyo」ファイルに保存されます。現在、オプティマイザはあまり役に立ちません。それはassertステートメントを削除するだけです。-Oを使用すると、すべてのバイトコードが最適化されます。.pycファイルは無視され、.pyファイルは最適化されたバイトコードにコンパイルされます。
- 2つの-OフラグをPythonインタープリター(-OO)に渡すと、バイトコードコンパイラーが最適化を実行し、まれにプログラムの誤動作を引き起こす可能性があります。現在
__doc__
、バイトコードから削除されるのは文字列のみであるため、よりコンパクトな「.pyo」ファイルになります。一部のプログラムはこれらを利用可能にすることに依存している可能性があるため、このオプションは、自分が何をしているかわかっている場合にのみ使用してください。- 「.pyc」または「.pyo」ファイルから読み取られたプログラムは、「。py」ファイルから読み取られたプログラムよりも速く実行されません。「.pyc」または「.pyo」ファイルの方が高速なのは、ファイルの読み込み速度だけです。
- コマンドラインで名前を指定してスクリプトを実行すると、スクリプトのバイトコードが「.pyc」または「.pyo」ファイルに書き込まれることはありません。したがって、スクリプトのほとんどのコードをモジュールに移動し、そのモジュールをインポートする小さなブートストラップスクリプトを用意することで、スクリプトの起動時間を短縮できます。コマンドラインで直接「.pyc」または「.pyo」ファイルに名前を付けることもできます。
注意:
2015-09-15に、Python 3.5リリースはPEP-488を実装し、.pyo
ファイルを削除しました。これは、.pyc
ファイルが最適化されていないバイトコードと最適化されたバイトコードの両方を表すことを意味します。
def f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
.pyo
。これにより、ファイルの概念がなくなります。最適化されたバイトコードでさえ、.pyc
拡張Python 3.5で終わります。
sys.path
です。site
モジュールを参照してください。追加のPythonファイル拡張子(ほとんどの場合は非公式)のより大きなリストは、http://dcjtech.info/topic/python-file-extensions/にあります。
.pth
ファイルについて説明する必要があります。