Lebih
Apa konvensi penamaan dalam Python untuk nama variabel dan fungsi?
Berasal dari C# latar belakang konvensi penamaan variabel dan nama metode yang biasanya baik camelCase atau PascalCase:
c# // C# contoh string thisIsMyVariable = "a" public void ThisIsMyMethod()
Di Python, saya telah melihat di atas tapi saya juga melihat garis bawah yang digunakan:
``python
python contoh
this_is_my_variable = 'a' def this_is_my_function(): ``
Apakah ada yang lebih baik, pasti coding style untuk Python?
708
13
Lihat Python PEP 8.
Variabel-variabel...
Secara pribadi, saya menyimpang dari ini karena saya juga lebih suka
mixedCase
ataslower_case
untuk proyek-proyek saya sendiri.Google Python Style Guide memiliki konvensi berikut:
Serupa skema penamaan harus diterapkan untuk
CLASS_CONSTANT_NAME
David Goodger (di "Kode Seperti Pythonista" di sini) menjelaskan PEP 8 rekomendasi sebagai berikut:
joined_lower
untuk fungsi-fungsi, metode, atribut-atribut variabeljoined_lower
atauALL_CAPS
untuk konstantaStudlyCaps
untuk kelascamelCase
hanya untuk menyesuaikan diri dengan pra-konvensi yang adaSebagai Panduan Gaya untuk Python Code mengakui,
Catatan bahwa ini mengacu hanya untuk Python's standar perpustakaan. Jika mereka dapat't mendapatkan yang konsisten, maka di sana hampir tidak jauh harapan untuk memiliki umumnya ditaati-untuk konvensi untuk semua kode Python, apakah ada?
Dari itu, dan diskusi di sini, saya akan menyimpulkan bahwa itu's tidak dosa yang mengerikan jika seseorang terus menggunakan misalnya Jawa's atau C#'s (jelas dan mapan) konvensi penamaan variabel dan fungsi yang ketika menyeberang ke Python. Menjaga dalam pikiran, tentu saja, bahwa itu adalah yang terbaik untuk tunduk dengan apapun gaya yang berlaku untuk codebase / proyek / tim terjadi. Sebagai Python Panduan Gaya poin, konsistensi internal yang paling penting.
jangan ragu untuk memberhentikan saya sebagai seorang yang sesat. :-) Suka OP, saya'bukan "Pythonista", belum pula.
Ada PEP 8, sebagai jawaban lain menunjukkan, tapi PEP 8 ini hanya gaya untuk perpustakaan standar, dan's hanya dianggap sebagai injil di dalamnya. Salah satu yang paling sering terjadi penyimpangan dari PEP 8 untuk bagian lain dari kode adalah variabel penamaan, khusus untuk metode. Tidak ada satu mendominasi gaya, meskipun mengingat volume kode yang menggunakan mixedCase, jika satu orang untuk membuat ketat sensus salah satu mungkin akan berakhir dengan versi PEP 8 dengan mixedCase. Ada sedikit lain penyimpangan dari PEP 8 yang cukup umum.
Seperti disebutkan, PEP 8 mengatakan untuk menggunakan
lower_case_with_underscores
untuk variabel, metode dan fungsi.Saya lebih suka menggunakan
lower_case_with_underscores
untuk variabel danmixedCase
untuk metode dan fungsi membuat kode lebih jelas dan dapat dibaca. Dengan demikian mengikuti Zen Python's "eksplisit lebih baik dari implisit" dan "Pembacaan jumlah"selanjutnya untuk apa @JohnTESlade telah menjawab. Google's python style guide memiliki beberapa cukup rapi rekomendasi,
Nama-nama untuk Menghindari
\__double_terkemuka_dan_tertinggal_underscore__ nama
(dilindungi oleh Python)Konvensi Penamaan
CapWords
untuk nama kelas, tapilower_with_under.py
untuk nama modul. Meskipun ada banyak modul yang ada bernamaCapWords.py
ini sekarang berkecil hati karena itu's membingungkan ketika modul terjadi untuk diberi nama setelah sebuah kelas. ("tunggu-aku menulisimpor StringIO
ataudari StringIO impor StringIO
?")Pedoman berasal dari Guido's Rekomendasi
Secara pribadi saya mencoba untuk menggunakan CamelCase untuk kelas, mixedCase metode dan fungsi. Variabel biasanya dipisahkan underscore (ketika saya ingat). Cara ini saya dapat memberitahu sekilas apa yang sebenarnya saya'm panggilan, daripada semuanya terlihat sama.
Paling python orang lebih memilih garis bawah, tapi bahkan saya menggunakan python sejak lebih dari 5 tahun sekarang, aku masih tidak suka mereka. Mereka hanya terlihat jelek bagi saya, tapi mungkin itu's semua Java di kepala saya.
Aku hanya seperti CamelCase baik karena lebih cocok dengan kelas jalan yang bernama, rasanya lebih logis untuk memiliki
SomeClass.melakukan sesuatu()
dariSomeClass.do_something()
. Jika anda melihat-lihat di global modul indeks di python, anda akan menemukan keduanya, yang adalah karena fakta bahwa itu's koleksi perpustakaan dari berbagai sumber yang tumbuh lembur dan tidak sesuatu yang dikembangkan oleh salah satu perusahaan seperti Matahari dengan ketat aturan pengkodean. Saya akan mengatakan yang intinya adalah: Gunakan apa pun yang anda suka lebih baik,'s hanya masalah selera pribadi.Ada sebuah kertas tentang hal ini: http://www.cs.kent.edu/~jmaletic/makalah/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL;DR Itu mengatakan bahwa snake_case lebih mudah dibaca dari camelCase. Yang's mengapa bahasa-bahasa modern menggunakan (atau harus menggunakan) ular di mana pun mereka bisa.
Coding gaya ini biasanya merupakan bagian dari suatu organisasi's kebijakan internal/konvensi standar, tapi saya pikir secara umum, all_lower_case_underscore_separator gaya (juga disebut snake_case) adalah yang paling umum di python.
Saya pribadi menggunakan Java's konvensi penamaan ketika mengembangkan dalam bahasa pemrograman yang lain karena lebih konsisten dan mudah untuk mengikuti. Dengan cara itu saya tidak terus berjuang atas apa konvensi untuk penggunaan yang seharusnya't menjadi bagian tersulit dari proyek saya!
Biasanya, satu mengikuti konvensi yang digunakan dalam bahasa's perpustakaan standar.