Artılar:
Birincisi: hafif, yenilebilir şaşkınlık.
İkincisi: derleme daha küçük bir dosya ile sonuçlanırsa, daha hızlı yükleme süreleri elde edersiniz. Web için güzel.
Üçüncüsü: Python derleme adımını atlayabilir. Başlangıç yükünde daha hızlı. CPU ve web için güzel.
Dördüncüsü: ne kadar çok yorum yaparsanız, .pycveya .pyodosya kaynak .pydosyayla karşılaştırıldığında o kadar küçük olur .
Beşinci olarak: sadece bir .pycveya .pyodosyaya sahip bir son kullanıcının size anlatmayı unuttukları geri döndürülmemiş bir değişikliğin neden olduğu bir hatayı sunma olasılığı daha düşüktür.
Altıncı: Gömülü bir sistemi hedefliyorsanız, gömmek için daha küçük boyutlu bir dosya elde etmek önemli bir artı olabilir ve mimari stabildir, bu nedenle aşağıda ayrıntıları verilen bir dezavantaj devreye girmez.
Üst düzey derleme
Bir üst düzey python kaynak dosyasını bir .pycdosyaya şu şekilde derleyebileceğinizi bilmek yararlıdır :
python -m py_compile myscript.py
Bu, yorumları kaldırır. docstringsBozulmamış bırakır . Siz de bundan kurtulmak docstringsistiyorsanız (bunu neden yaptığınızı ciddi bir şekilde düşünmek isteyebilirsiniz) bunun yerine bu şekilde derleyin ...
python -OO -m py_compile myscript.py
... ve .pyodosya yerine dosya alırsınız .pyc; kodun temel işlevselliği açısından eşit olarak dağıtılabilir, ancak soyulmuş olanın boyutuna göre daha küçüktür docstrings(ve docstringsilk etapta iyi olsaydı sonraki istihdam için daha az kolayca anlaşılabilir ). Ancak aşağıdaki üç dezavantaja bakın.
Python'un .pydosyayı varsa veya varsa dosyanın .pyyerine getirilip getirilmeyeceğine karar vermek için dosyanın tarihini kullandığını unutmayın. Bu nedenle .py dosyanızı düzenleyin ve veya eski. Veya yararlarını tekrar alabilmek için yeniden derlemeniz gerekir..pyc.pyo.pyc.pyo.pyc.pyo
Dezavantajları:
Birincisi: İçinde bir "sihirli çerez" var .pycve .pyopython dosyasının derlendiği sistem mimarisini gösteren dosyalar var. Bu dosyalardan birini farklı türde bir ortama dağıtırsanız bozulur. İlişkilendirilmiş .pycveya .pyoilişkilendirilmemiş .pyyeniden derleme veya dağıtmak touchyerine dağıtırsanız, .pycveya .pyoson kullanıcı da düzeltemez.
İkincisi: Yukarıda açıklandığı gibi komut satırı seçeneğinin docstringskullanımı ile atlanırsa -OO, hiç kimse bu bilgiye ulaşamayacaktır, bu da kodu daha zor (veya imkansız) hale getirebilir.
Üçüncüsü: Python'un -OOseçeneği ayrıca -Okomut satırı seçeneğine göre bazı optimizasyonlar uygular ; bu işlemin değişmesine neden olabilir. Bilinen optimizasyonlar:
sys.flags.optimize = 1
assert ifadeler atlandı
__debug__ = Yanlış
Dördüncüsü: Python betiğinizi #!/usr/bin/pythonilk satırdaki bir şeyle kasıtlı olarak yürütülebilir hale getirdiyseniz , bu çıkarılır .pycve .pyodosyalar ve bu işlevsellik kaybolur.
Beşinci: biraz açıktır, ancak kodunuzu derlerseniz, sadece kullanımı etkilenmekle kalmaz, aynı zamanda başkalarının işinizden öğrenme potansiyeli, genellikle ciddi şekilde azalır.