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 .pyc
atau .pyo
akan dibandingkan dengan .py
file sumber .
Kelima: pengguna akhir dengan hanya satu .pyc
atau .pyo
file 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 .pyc
file dengan cara ini:
python -m py_compile myscript.py
Ini menghilangkan komentar. Itu meninggalkan docstrings
utuh. Jika Anda ingin menyingkirkannya docstrings
juga (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 .pyc
file; 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 docstrings
di tempat pertama). Tapi lihat kekurangannya tiga, di bawah.
Perhatikan bahwa python menggunakan tanggal .py
file, jika ada, untuk memutuskan apakah harus mengeksekusi .py
file sebagai lawan dari file .pyc
atau .pyo
--- jadi edit file .py Anda, dan .pyc
atau.pyo
sudah usang dan manfaat apa pun yang Anda peroleh hilang. Anda perlu mengkompilasi ulang untuk mendapatkan .pyc
atau .pyo
manfaat kembali lagi, seperti mungkin.
Kekurangan:
Pertama: Ada "cookie ajaib" .pyc
dan .pyo
file 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 .pyc
atau .pyo
tanpa terkait .py
untuk mengkompilasi ulang atautouch
sehingga menggantikan .pyc
atau .pyo
, pengguna akhir tidak dapat memperbaikinya, baik.
Kedua: Jika docstrings
dilewati dengan menggunakan -OO
opsi 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: -OO
Opsi Python juga mengimplementasikan beberapa optimasi -O
sesuai 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/python
pada baris pertama, ini akan dihapus .pyc
dan .pyo
file 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.