プラス:
まず、軽度で敗北可能な難読化です。
第二に、コンパイルの結果、ファイルが大幅に小さくなると、ロード時間が短縮されます。ウェブに最適です。
3番目:Pythonはコンパイル手順をスキップできます。初期ロードでより高速です。CPUとWebに最適です。
4番目:コメントが多いほど、.pyc
or .pyo
ファイルはソース.py
ファイルと比較して小さくなります。
5番目:.pyc
またはのみを持つエンドユーザー.pyo
ファイルを手元に元に戻さなかった変更が原因であることを伝え忘れたために、バグを提示する可能性がはるかに低くなります。
第6:組み込みシステムを目的としている場合、より小さいサイズのファイルを取得して埋め込むことは大きな利点となる可能性があり、アーキテクチャは安定しているため、以下で説明する欠点の1つは機能しません。
トップレベルのコンパイル
トップレベルのPythonソースファイルを.pyc
次の方法でファイルにコンパイルできることを知っておくと便利です。
python -m py_compile myscript.py
これによりコメントが削除されます。それはdocstrings
そのまま残します。あなたdocstrings
も同様に取り除きたいなら(あなたはなぜあなたがそれをしているのかを真剣に考えたくなるかもしれません)、代わりにこのようにコンパイルしてください...
python -OO -m py_compile myscript.py
... .pyo
ファイルの代わりにファイルを取得し.pyc
ます。コードの基本的な機能の点では均等に配布できますが、取り除かれたサイズの分だけ小さくdocstrings
なります(適切な場合、その後の雇用では理解しにくくなります)docstrings
そもそもだった)。ただし、以下の欠点3を参照してください。
pythonは、.py
ファイルの日付が存在する場合、それを使用.py
して.pyc
or .pyo
ファイルではなくファイルを実行するかどうかを決定することに注意してください-.pyファイルを編集すると、.pyc
or .pyo
は廃止され、得られたすべての利点が失われます。.pyc
またはの.pyo
利点を再度取得するには、再コンパイルする必要があります。
欠点:
最初に、Pythonファイルがコンパイルされたシステムアーキテクチャを示す「マジッククッキー」.pyc
と.pyo
ファイルがあります。これらのファイルの1つを別のタイプの環境に配布すると、壊れます。あなたが配布する場合.pyc
または.pyo
関連することなく、.py
再コンパイルしたりtouch
して、それが取って代わります.pyc
か.pyo
と、エンドユーザーも修正できません。
2番目:上記のコマンドラインオプションをdocstrings
使用してスキップした場合、-OO
その情報を誰も取得できなくなり、コードの使用がより困難(または不可能)になる可能性があります。
3番目:Pythonの-OO
オプションは、-O
コマンドラインオプションに従っていくつかの最適化も実装します。これにより、動作が変わる場合があります。既知の最適化は次のとおりです。
sys.flags.optimize
= 1
assert
ステートメントはスキップされます
__debug__
=偽
第四は:あなたが意図的にのために何かを使用してPythonスクリプトを実行可能にしていた場合#!/usr/bin/python
、最初の行で、これはで取り除かれる.pyc
と.pyo
、ファイルとその機能が失われます。
第5に、ある程度明白ですが、コードをコンパイルすると、その使用に影響が及ぶだけでなく、他の人があなたの作業から学ぶ可能性が大幅に減少します。