Konvensi penamaan file python?

139

Saya telah melihat bagian PEP-8 ini https://www.python.org/dev/peps/pep-0008/#package-and-module-names

Saya tidak jelas apakah ini merujuk pada nama file modul / kelas / paket.

Jika saya punya satu contoh masing-masing, haruskah nama file semua huruf kecil dengan garis bawah jika sesuai? Atau sesuatu yang lain?

kegelapan
sumber
4
tl; dr: dua kelas FooBardan FooBizmungkin keduanya masuk dalam file somepkg/foobar.py(dengan demikian:) from somepkg.foobar import FooBartetapi kelas TimerErrorbisa masuk except/timer_error.py(dengan demikian from except.timer_error import TimerError), karena menghapus CamelCaseterkadang membuat kata lebih sulit untuk dibaca, sehingga snake_casedapat digunakan untuk nama file.
michael

Jawaban:

156

Mengutip https://www.python.org/dev/peps/pep-0008/#package-and-module-names :

Modul harus memiliki nama pendek, semua huruf kecil. Garis bawah dapat digunakan dalam nama modul jika itu meningkatkan keterbacaan. Paket-paket python juga harus memiliki nama-nama kecil dan huruf kecil semua, meskipun penggunaan garis bawah tidak disarankan.

Untuk kelas :

Nama kelas biasanya harus menggunakan konvensi CapWords.

Dan nama variabel fungsi dan (lokal) harus:

huruf kecil, dengan kata-kata dipisahkan oleh garis bawah seperlunya untuk meningkatkan keterbacaan

Lihat jawaban ini untuk perbedaan antara modul, kelas, dan paket:

  • Modul Python hanyalah file sumber Python, yang dapat mengekspos kelas, fungsi dan variabel global.
  • Paket Python hanyalah sebuah direktori modul Python.

Jadi PEP 8 memberitahu Anda bahwa :

  • modul (nama file) harus memiliki nama kecil, semua huruf kecil , dan dapat berisi garis bawah;
  • paket (direktori) harus memiliki nama pendek, semuanya huruf kecil , lebih disukai tanpa garis bawah;
  • kelas harus menggunakan konvensi CapWords.

PEP 8 memberi tahu bahwa nama harus pendek ; jawaban ini memberikan gambaran umum yang baik tentang apa yang harus dipertimbangkan ketika membuat nama variabel, yang juga berlaku untuk nama lain (untuk kelas, paket, dll.):

  • nama variabel bukan deskriptor penuh;
  • letakkan detail dalam komentar;
  • nama yang terlalu spesifik mungkin berarti kode yang terlalu spesifik;
  • simpan cakupan singkat untuk pencarian cepat;
  • habiskan waktu untuk memikirkan keterbacaan.

Untuk menyelesaikannya, tinjauan umum yang baik dari konvensi penamaan diberikan dalam Panduan Gaya Google Python .

agold
sumber
5
Dan dengan malu saya akan meminta untuk mengkonfirmasi pemahaman saya, modul berisi kelas - jadi Anda akan menggunakan kelas dalam modul dan dapat memiliki beberapa kelas dalam satu modul?
darkace
6
Ya, Anda dapat memiliki 0, 1, atau lebih banyak kelas dalam sebuah modul.
agold
1
Saya senang saya menemukan ini tepat waktu sebelum proyek saya lepas kendali, karena semua paket saya mengikuti konvensi CapsWords seperti kelas saya.
Bas Jansen
1
@ Pypmannetjies ini sebenarnya adalah pertanyaan lain, tapi saya akan mengatakan bahwa Anda harus lebih memilih nama yang panjang dan dapat dimengerti daripada yang pendek.
agold
1
Untuk nama paket, dikatakan "penggunaan garis bawah tidak disarankan", tidak dilarang. Dalam filsafat python, Anda harus mengikuti aturan, "meskipun kepraktisan mengalahkan kemurnian". Tentu saja, yang terbaik adalah untuk menemukan cara untuk mengikuti aturan dan praktis (mungkin membuat beberapa paket untuk membagi nama, some> long> namebukan somelongname?)
Juh_
0

Berikut ini tautan untuk berbagai jenis konvensi nama Python.

Panduan gaya untuk Python didasarkan pada rekomendasi konvensi penamaan Guido.

masukkan deskripsi gambar di sini

Vlad Bezden
sumber