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?

Larutan

Lihat Python PEP 8.

nama Fungsi harus huruf kecil, dengan kata-kata yang dipisahkan oleh garis bawah sebagai diperlukan untuk meningkatkan keterbacaan.

mixedCase diperbolehkan hanya dalam konteks mana yang's sudah berlaku gaya

Variabel-variabel...

Menggunakan fungsi penamaan aturan: huruf kecil dengan kata-kata yang dipisahkan oleh menggarisbawahi diperlukan untuk meningkatkan mudah dibaca.

Secara pribadi, saya menyimpang dari ini karena saya juga lebih suka mixedCase atas lower_case untuk proyek-proyek saya sendiri.

Komentar (25)

Google Python Style Guide memiliki konvensi berikut:

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_CONSTANT_NAME, global_var_name, instance_var_name, function_parameter_name, local_var_name

Serupa skema penamaan harus diterapkan untuk CLASS_CONSTANT_NAME

Komentar (9)

David Goodger (di "Kode Seperti Pythonista" di sini) menjelaskan PEP 8 rekomendasi sebagai berikut:

  • joined_lower untuk fungsi-fungsi, metode, atribut-atribut variabel

  • joined_lower atau ALL_CAPS untuk konstanta

  • StudlyCaps untuk kelas

  • camelCase hanya untuk menyesuaikan diri dengan pra-konvensi yang ada

Komentar (5)

Sebagai Panduan Gaya untuk Python Code mengakui,

konvensi penamaan dari Python's perpustakaan yang sedikit berantakan, jadi kita'll tidak pernah mendapatkan ini benar-benar konsisten

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.

Komentar (0)

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.

Komentar (1)

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 dan mixedCase 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"

Komentar (3)

selanjutnya untuk apa @JohnTESlade telah menjawab. Google's python style guide memiliki beberapa cukup rapi rekomendasi,

Nama-nama untuk Menghindari

  • nama karakter tunggal kecuali untuk counter atau iterator
  • strip (-) di setiap paket/modul nama
  • \__double_terkemuka_dan_tertinggal_underscore__ nama (dilindungi oleh Python)

Konvensi Penamaan

  • "Internal" berarti internal ke modul atau dilindungi atau swasta di dalam kelas.
  • Mengawali satu garis bawah (_) memiliki beberapa dukungan untuk melindungi modul variabel dan fungsi (tidak termasuk dengan impor * dari). Mengawali ganda garis bawah (__) ke instance variabel atau metode yang secara efektif berfungsi untuk membuat variabel atau metode swasta untuk kelasnya (menggunakan nama mangling).
  • Tempat yang berhubungan dengan kelas dan tingkat atas fungsi bersama-sama dalam sebuah modul. Tidak seperti di Jawa, ada tidak perlu untuk membatasi diri untuk satu kelas per modul.
  • Gunakan CapWords untuk nama kelas, tapi lower_with_under.py untuk nama modul. Meskipun ada banyak modul yang ada bernama CapWords.py ini sekarang berkecil hati karena itu's membingungkan ketika modul terjadi untuk diberi nama setelah sebuah kelas. ("tunggu-aku menulis impor StringIO atau dari StringIO impor StringIO?")

Pedoman berasal dari Guido's Rekomendasi

Komentar (0)

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.

Komentar (3)

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() dari SomeClass.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.

Komentar (3)

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.

Komentar (1)

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.

Komentar (0)

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!

Komentar (0)

Biasanya, satu mengikuti konvensi yang digunakan dalam bahasa's perpustakaan standar.

Komentar (0)