プラス:
まず、軽度で敗北可能な難読化です。
第二に、コンパイルの結果、ファイルが大幅に小さくなると、ロード時間が短縮されます。ウェブに最適です。
3番目:Pythonはコンパイル手順をスキップできます。初期ロードでより高速です。CPUとWebに最適です。
4番目:コメントが多いほど、.pycor .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して.pycor .pyoファイルではなくファイルを実行するかどうかを決定することに注意してください-.pyファイルを編集すると、.pycor .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に、ある程度明白ですが、コードをコンパイルすると、その使用に影響が及ぶだけでなく、他の人があなたの作業から学ぶ可能性が大幅に減少します。