Apa arti ekstensi file python ini?
- .pyc
- .pyd
- .pyo
Apa perbedaan di antara mereka dan bagaimana mereka dihasilkan dari file * .py?
.py
: Ini biasanya kode sumber input yang Anda tulis..pyc
: Ini adalah bytecode yang dikompilasi. Jika Anda mengimpor modul, python akan membuat *.pyc
file yang berisi bytecode untuk menjadikannya mengimpor lagi nanti lebih mudah (dan lebih cepat)..pyo
: Ini adalah format file yang digunakan sebelum Python 3.5 untuk *.pyc
file yang dibuat dengan -O
bendera optimisasi ( ). (lihat catatan di bawah).pyd
: Ini pada dasarnya adalah file windows dll. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllJuga untuk beberapa diskusi lebih lanjut tentang .pyc
vs .pyo
, lihat: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (Saya telah menyalin bagian penting di bawah)
- Ketika interpreter Python dipanggil dengan flag -O, kode yang dioptimalkan dihasilkan dan disimpan dalam file '.pyo'. Pengoptimal saat ini tidak banyak membantu; itu hanya menghilangkan pernyataan tegas. Ketika -O digunakan, semua bytecode dioptimalkan; File .pyc diabaikan dan file .py dikompilasi untuk bytecode yang dioptimalkan.
- Melewati dua -O flag ke interpreter Python (-OO) akan menyebabkan kompiler bytecode untuk melakukan optimasi yang dalam beberapa kasus jarang mengakibatkan program yang tidak berfungsi. Saat ini hanya
__doc__
string yang dihapus dari bytecode, menghasilkan file '.pyo' yang lebih ringkas. Karena beberapa program mungkin mengandalkan ini tersedia, Anda hanya boleh menggunakan opsi ini jika Anda tahu apa yang Anda lakukan.- Suatu program tidak berjalan lebih cepat ketika itu dibaca dari file '.pyc' atau '.pyo' daripada ketika itu dibaca dari file '.py'; satu-satunya hal yang lebih cepat tentang file '.pyc' atau '.pyo' adalah kecepatannya.
- Ketika skrip dijalankan dengan memberikan namanya di baris perintah, bytecode untuk skrip tidak pernah ditulis ke file '.pyc' atau '.pyo'. Dengan demikian, waktu mulai skrip dapat dikurangi dengan memindahkan sebagian besar kodenya ke modul dan memiliki skrip bootstrap kecil yang mengimpor modul itu. Dimungkinkan juga untuk menamai file '.pyc' atau '.pyo' secara langsung pada baris perintah.
catatan:
Pada 2015-09-15 rilis Python 3.5 mengimplementasikan PEP-488 dan menghapus .pyo
file. Ini berarti bahwa .pyc
file mewakili bytecode yang tidak dioptimalkan dan dioptimalkan.
def f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
.pyo
file. Bahkan bytecode yang dioptimalkan berakhir dengan.pyc
ekstensi Python 3.5, kemudian.sys.path
. Lihatsite
modul.Daftar ekstensi file Python tambahan yang lebih besar (kebanyakan jarang dan tidak resmi) dapat ditemukan di http://dcjtech.info/topic/python-file-extensions/
sumber
.pth
file.