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, .pyc
veya .pyo
dosya kaynak .py
dosyayla karşılaştırıldığında o kadar küçük olur .
Beşinci olarak: sadece bir .pyc
veya .pyo
dosyaya 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 .pyc
dosyaya şu şekilde derleyebileceğinizi bilmek yararlıdır :
python -m py_compile myscript.py
Bu, yorumları kaldırır. docstrings
Bozulmamış bırakır . Siz de bundan kurtulmak docstrings
istiyorsanı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 .pyo
dosya 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 docstrings
ilk etapta iyi olsaydı sonraki istihdam için daha az kolayca anlaşılabilir ). Ancak aşağıdaki üç dezavantaja bakın.
Python'un .py
dosyayı varsa veya varsa dosyanın .py
yerine 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 .pyc
ve .pyo
python 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ş .pyc
veya .pyo
ilişkilendirilmemiş .py
yeniden derleme veya dağıtmak touch
yerine dağıtırsanız, .pyc
veya .pyo
son kullanıcı da düzeltemez.
İkincisi: Yukarıda açıklandığı gibi komut satırı seçeneğinin docstrings
kullanı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 -OO
seçeneği ayrıca -O
komut 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/python
ilk satırdaki bir şeyle kasıtlı olarak yürütülebilir hale getirdiyseniz , bu çıkarılır .pyc
ve .pyo
dosyalar 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.