Standar pengkodean Python / praktik terbaik [ditutup]

116

Dengan python, apakah Anda biasanya menggunakan PEP 8 - Panduan Gaya untuk Kode Python sebagai standar / pedoman pengkodean Anda? Apakah ada standar formal lain yang Anda sukai?

Kozyarchuk
sumber
1
//, Permintaan "preferensi penonton" mungkin tampak tidak berbahaya, pada awalnya, tapi ternyata stackoverflow menjadi mekanisme polling, semacam demokrasi sesat dari sedikit orang melawan banyak. "Apakah ada ________ lain yang Anda sukai?" adalah, secara harfiah, menanyakan preferensi, bukan fakta.
Nathan Basanese

Jawaban:

14

Saya mengikuti pedoman Python Idiom and Efficiency , oleh Rob Knight. Saya pikir mereka persis sama dengan PEP 8, tetapi lebih sintetis dan berdasarkan contoh.

Jika Anda menggunakan wxPython, Anda mungkin juga ingin memeriksa Panduan Gaya untuk kode wxPython , oleh Chris Barker, juga.

Mapad
sumber
8

Saya tetap berpegang pada PEP-8 dengan sangat erat.

Ada tiga hal spesifik yang tidak dapat saya ubah ke PEP-8.

  • Hindari spasi kosong yang tidak ada di dalam tanda kurung, tanda kurung, atau tanda kurung.

    Disarankan: spam(ham[1], {eggs: 2})

    Saya tetap melakukan ini: spam( ham[ 1 ], { eggs: 2 } )

    Mengapa? 30+ tahun kebiasaan mendarah daging adalah meringkuk () melawan nama fungsi atau (dalam C) kata kunci pernyataan. Dimulai dengan Fortran IV di tahun 70-an.

  • Gunakan spasi di sekitar operator aritmatika:

    Disarankan: x = x * 2 - 1

    Saya tetap melakukan ini: x= x * 2 - 1

    Mengapa? Ilmu Pemrograman Gries menyarankan ini sebagai cara untuk menekankan hubungan antara tugas dan variabel siapa yang statusnya sedang diubah.

    Ini tidak berfungsi dengan baik untuk banyak tugas atau tugas tambahan, untuk itu saya menggunakan banyak ruang.

  • Untuk nama fungsi, nama metode dan nama variabel contoh

    Disarankan: huruf kecil, dengan kata-kata yang dipisahkan oleh garis bawah seperlunya untuk meningkatkan keterbacaan.

    Saya tetap melakukan ini: camelCase

    Mengapa? 20+ tahun kebiasaan camelCase yang mendarah daging, dimulai dengan Pascal di tahun 80-an.

S. Lott
sumber
1
Itu konten yang bagus! codingstyleguide.com atau codereview.stackexchange.com akan menjadi tempat yang bagus untuk memiliki pedoman hebat ini.
Pompeyo
5

PEP 8 bagus, satu-satunya hal yang saya harap itu turun lebih keras adalah perang suci Tabs-vs-Spaces.

Pada dasarnya jika Anda memulai proyek dengan python, Anda harus memilih Tab atau Spaces dan kemudian menembak semua pelanggar saat terlihat.

Ryan
sumber
4
Tab atau Spasi? Dari PEP8: Spasi adalah metode indentasi yang disukai. Tab harus digunakan semata-mata untuk tetap konsisten dengan kode yang sudah diindentasi dengan tab.
The Demz
//, PEP8 cukup jelas bahwa spasi adalah metode indentasi yang disukai, Ryan. Suara negatif. Akankah memperbarui jawabannya?
Nathan Basanese
5

Untuk menambah daftar panduan idiomatik bhadra :

Lihat presentasi Anthony Baxter tentang Pemrograman Python Efektif (dari OSON 2005).

Kutipan:

# dict's setdefault method turns this:
if key in dictobj:
    dictobj[key].append(val)
else:
    dictobj[key] = [val]
# into this:
dictobj.setdefault(key,[]).append(val)
Ryan Cox
sumber
4

Saya mengikutinya dengan sangat ketat. Satu-satunya dewa sebelum PEP-8 adalah basis kode yang ada.

Alex Gaynor
sumber
1
dan saya akan mencatat bahwa PEP-8 bahkan memperhitungkan basis kode yang ada.
John Mulder
2

Ya, saya mencoba mengikutinya sedekat mungkin.

Saya tidak mengikuti standar pengkodean lainnya.

Oli
sumber
1

Saya mengikuti PEP8, ini adalah gaya pengkodean yang hebat.

bahagia
sumber