Plus:
Pertama: kebingungan yang ringan dan dapat dikalahkan.
Kedua: jika kompilasi menghasilkan file yang jauh lebih kecil, Anda akan mendapatkan waktu pemuatan yang lebih cepat. Bagus untuk web.
Ketiga: Python dapat melewati langkah kompilasi. Lebih cepat pada beban awal. Bagus untuk CPU dan web.
Keempat: semakin banyak Anda berkomentar, semakin kecil file .pycatau .pyoakan dibandingkan dengan .pyfile sumber .
Kelima: pengguna akhir dengan hanya satu .pycatau .pyofile di tangan jauh lebih kecil kemungkinannya untuk memberi Anda bug yang disebabkan oleh perubahan yang tidak dikembalikan yang lupa untuk Anda beri tahu.
Keenam: jika Anda membidik sistem tertanam, mendapatkan file ukuran yang lebih kecil untuk disematkan mungkin merupakan nilai tambah yang signifikan, dan arsitekturnya stabil sehingga kelemahannya, yang dirinci di bawah, tidak ikut berperan.
Kompilasi tingkat atas
Sangat berguna untuk mengetahui bahwa Anda dapat mengkompilasi file sumber python tingkat atas ke dalam .pycfile dengan cara ini:
python -m py_compile myscript.py
Ini menghilangkan komentar. Itu meninggalkan docstringsutuh. Jika Anda ingin menyingkirkannya docstringsjuga (Anda mungkin ingin serius memikirkan mengapa Anda melakukan itu), maka kompilasi dengan cara ini sebagai gantinya ...
python -OO -m py_compile myscript.py
... dan Anda akan mendapatkan .pyo file alih-alih .pycfile; sama-sama dapat didistribusikan dalam hal fungsi esensial kode, tetapi lebih kecil dengan ukuran stripped-out docstrings(dan kurang mudah dipahami untuk pekerjaan berikutnya jika sudah layak docstringsdi tempat pertama). Tapi lihat kekurangannya tiga, di bawah.
Perhatikan bahwa python menggunakan tanggal .pyfile, jika ada, untuk memutuskan apakah harus mengeksekusi .pyfile sebagai lawan dari file .pycatau .pyo--- jadi edit file .py Anda, dan .pycatau.pyo sudah usang dan manfaat apa pun yang Anda peroleh hilang. Anda perlu mengkompilasi ulang untuk mendapatkan .pycatau .pyomanfaat kembali lagi, seperti mungkin.
Kekurangan:
Pertama: Ada "cookie ajaib" .pycdan .pyofile yang menunjukkan arsitektur sistem tempat file python dikompilasi. Jika Anda mendistribusikan salah satu file ini ke lingkungan dari tipe yang berbeda, itu akan rusak. Jika Anda mendistribusikan .pycatau .pyotanpa terkait .pyuntuk mengkompilasi ulang atautouch sehingga menggantikan .pycatau .pyo, pengguna akhir tidak dapat memperbaikinya, baik.
Kedua: Jika docstrings dilewati dengan menggunakan -OOopsi baris perintah seperti yang dijelaskan di atas, tidak ada yang bisa mendapatkan informasi itu, yang dapat membuat penggunaan kode lebih sulit (atau tidak mungkin.)
Ketiga: -OOOpsi Python juga mengimplementasikan beberapa optimasi -Osesuai opsi baris perintah; ini dapat menyebabkan perubahan dalam operasi. Optimalisasi yang diketahui adalah:
sys.flags.optimize = 1
assert pernyataan dilewati
__debug__ = Salah
Keempat: jika Anda dengan sengaja membuat skrip python Anda dapat dieksekusi dengan sesuatu sesuai urutan #!/usr/bin/pythonpada baris pertama, ini akan dihapus .pycdan .pyofile serta fungsinya hilang.
Kelima: agak jelas, tetapi jika Anda mengkompilasi kode Anda, tidak hanya penggunaannya dapat terpengaruh, tetapi potensi orang lain untuk belajar dari pekerjaan Anda berkurang, seringkali sangat parah.