Berasal dari latar belakang C #, konvensi penamaan untuk variabel dan nama metode biasanya camelCase atau PascalCase:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
Dalam Python, saya telah melihat di atas tetapi saya juga melihat garis bawah yang digunakan:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Apakah ada gaya pengkodean yang lebih disukai dan definitif untuk Python?
findMeAClass
mungkin lebih jelek daripadafind_me_a_class
.The Google Python Style Guide memiliki konvensi berikut:
Skema penamaan yang serupa harus diterapkan ke a
CLASS_CONSTANT_NAME
sumber
property
... mungkin ini soalDavid Goodger (dalam "Code Like a Pythonista" di sini ) menjelaskan rekomendasi PEP 8 sebagai berikut:
joined_lower
untuk fungsi, metode, atribut, variabeljoined_lower
atauALL_CAPS
untuk konstantaStudlyCaps
untuk kelascamelCase
hanya untuk menyesuaikan diri dengan konvensi yang sudah ada sebelumnyasumber
joined_lower
untuk konstanta , hanya "semua huruf kapital dengan menggarisbawahi kata-kata yang memisahkan". Penasaran juga tentang fitur enum baru .StudlyCaps for classes
adalah aturan universal yang hebat untuk kelas di hampir semua bahasa. Lalu mengapa beberapa kelas built-in python (sepertidatetime.datetime
tidak mengikuti konvensi ini?unittest.TestCase.assertEqual
dan teman-teman juga tidak mengikuti konvensi snake_case. Yang benar adalah bahwa bagian-bagian dari perpustakaan standar Python dikembangkan sebelum konvensi telah dipadatkan, dan kita sekarang terjebak dengan mereka.Seperti yang diakui Panduan Gaya untuk Kode Python ,
Perhatikan bahwa ini merujuk hanya ke perpustakaan standar Python . Jika mereka tidak bisa mendapatkan yang konsisten, maka ada hampir tidak banyak harapan untuk memiliki umumnya-ditaati-konvensi untuk semua kode Python, apakah ada?
Dari itu, dan diskusi di sini, saya akan menyimpulkan bahwa itu bukan dosa yang mengerikan jika seseorang terus menggunakan misalnya konvensi penamaan Java atau C # (jelas dan mapan) untuk variabel dan fungsi ketika menyeberang ke Python. Ingatlah, tentu saja, yang terbaik adalah mematuhi gaya apa pun yang berlaku untuk basis kode / proyek / tim. Seperti yang ditunjukkan oleh Panduan Gaya Python, konsistensi internal paling penting.
Jangan ragu untuk menganggap saya sebagai bidat. :-) Seperti OP, saya bukan "Pythonista", belum.
sumber
Ada PEP 8 , seperti yang ditunjukkan oleh jawaban lain, tetapi PEP 8 hanya panduan gaya untuk perpustakaan standar, dan itu hanya dianggap sebagai Injil di dalamnya. Salah satu penyimpangan yang paling sering dari PEP 8 untuk potongan kode lainnya adalah penamaan variabel, khususnya untuk metode. Tidak ada gaya tunggal yang mendominasi, walaupun mempertimbangkan volume kode yang menggunakan mixedCase, jika seseorang ingin membuat sensus ketat seseorang mungkin akan berakhir dengan versi PEP 8 dengan mixedCase. Ada sedikit penyimpangan lain dari PEP 8 yang cukup umum.
sumber
Seperti disebutkan, PEP 8 mengatakan digunakan
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 eksplisit dan mudah dibaca. Dengan demikian mengikuti Zen dari Python "eksplisit lebih baik daripada implisit" dan "jumlah keterbacaan"sumber
lebih jauh dengan apa yang telah dijawab @JohnTESlade. Panduan gaya python Google memiliki beberapa rekomendasi yang cukup rapi,
Nama yang Harus Dihindari
\__double_leading_and_trailing_underscore__ names
(disediakan oleh Python)Konvensi penamaan
CapWords
untuk nama kelas, tetapilower_with_under.py
untuk nama modul. Meskipun ada banyak modul yang ada bernamaCapWords.py
, ini sekarang tidak disarankan karena membingungkan ketika modul diberi nama setelah kelas. ("tunggu - apakah saya menulisimport StringIO
ataufrom StringIO import StringIO
?")Pedoman berasal dari Rekomendasi Guido
sumber
Kebanyakan orang python lebih suka garis bawah, tetapi bahkan saya menggunakan python sejak lebih dari 5 tahun sekarang, saya masih tidak suka mereka. Mereka hanya terlihat jelek bagiku, tapi mungkin itu semua Jawa di kepalaku.
Saya hanya suka CamelCase lebih baik karena lebih cocok dengan cara kelas dinamai, Rasanya lebih logis untuk memilikinya
SomeClass.doSomething()
daripadaSomeClass.do_something()
. Jika Anda melihat-lihat dalam indeks modul global dalam python, Anda akan menemukan keduanya, yang disebabkan oleh fakta bahwa itu adalah kumpulan perpustakaan dari berbagai sumber yang tumbuh lembur dan bukan sesuatu yang dikembangkan oleh satu perusahaan seperti Sun dengan aturan pengkodean yang ketat . Saya akan mengatakan intinya adalah: Gunakan apapun yang Anda suka lebih baik, itu hanya masalah selera pribadi.sumber
make_xpath_predicate
,make_xpath_expr
,make_html_header
,make_html_footer
SomeClass.doSomething()
(metode statis umumnya jarang) yang biasa Anda hubungian_instance.do_something()
Secara pribadi saya mencoba menggunakan CamelCase untuk kelas, metode dan fungsi mixedCase. Variabel biasanya dipisahkan garis bawah (bila saya ingat). Dengan cara ini saya bisa melihat sekilas apa yang sebenarnya saya panggil, daripada semuanya tampak sama.
sumber
Ada sebuah makalah tentang ini: http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR Dikatakan bahwa snake_case lebih mudah dibaca daripada camelCase. Itu sebabnya bahasa modern menggunakan (atau seharusnya menggunakan) ular di mana pun mereka bisa.
sumber
Gaya pengkodean biasanya merupakan bagian dari standar kebijakan / konvensi internal organisasi, tetapi saya pikir secara umum, gaya all_lower_case_underscore_separator (juga disebut snake_case) paling umum digunakan dalam python.
sumber
Saya pribadi menggunakan konvensi penamaan Java ketika berkembang dalam bahasa pemrograman lain karena konsisten dan mudah diikuti. Dengan begitu saya tidak terus-menerus bergumul tentang konvensi apa yang harus digunakan yang seharusnya tidak menjadi bagian tersulit dari proyek saya!
sumber
library_function(my_arg)
).Biasanya, satu mengikuti konvensi yang digunakan di perpustakaan standar bahasa.
sumber