Saya masih terbiasa dengan konvensi python dan menggunakan pylint
untuk membuat kode saya lebih pythonic, tapi saya bingung dengan fakta bahwa pylint tidak menyukai nama variabel karakter tunggal. Saya memiliki beberapa loop seperti ini:
for x in x_values:
my_list.append(x)
dan ketika saya menjalankan pylint
, saya mendapatkan Invalid name "x" for type variable (should match [a-z_][a-z0-9_]{2,30}
- itu menunjukkan bahwa nama variabel yang valid harus antara 3 dan 31 karakter, tetapi saya telah melihat konvensi penamaan PEP8 dan saya tidak melihat sesuatu yang eksplisit mengenai satu huruf kecil , dan saya melihat banyak contoh yang menggunakannya.
Apakah ada sesuatu yang saya lewatkan di PEP8 atau apakah ini standar yang unik untuk pylint?
sumber
_
untuk menahan nilai-nilai sementara antipattern. Variabel garis bawah menunjukkan nilai yang tidak relevan / dibuang, bukan tugas sementara, sepertii
ataux
. Lebih jauh, dalam interpreter memiliki arti khusus untuk menampung nilai terakhir dari ekspresi terakhir.Sedikit lebih detail tentang apa yang dicatat oleh brankar alex: Anda dapat memberi tahu PyLint untuk membuat pengecualian untuk nama variabel yang (Anda bersumpah kelingking) sangat jelas meskipun kurang dari tiga karakter. Temukan atau tambahkan ke file pylintrc Anda , di bawah
[FORMAT]
tajuk:Di sini pk (untuk kunci primer), x, dan y adalah nama variabel yang telah saya tambahkan.
sumber
pylint 1.8.3
. pylint.pycqa.org/en/1.8/user_guide/options.htmlreturn [customer_address for customer_address in thing.get_customer_addresses() if customer_address.is_proper()]
vsreturn [a for a in thing.get_customer_addresses() if a.is_proper()]
Saya mengklaim yang terakhir lebih jelas, karena a jelas dari konteksnya. Secara umum, panjang variabel harus berkorelasi dengan ruang lingkup variabel.Dalam bahasa yang diketik dengan kuat, variabel nama 1 huruf bisa ok-ish, karena Anda biasanya mendapatkan tipe di samping nama dalam deklarasi variabel atau dalam prototipe fungsi / metode:
Dengan Python, Anda tidak mendapatkan informasi ini, jadi jika Anda menulis:
Anda sama sekali tidak memberikan petunjuk kepada tim pemeliharaan tentang fungsi apa yang dapat dilakukan, dan bagaimana dipanggil, dan apa yang dikembalikannya. Jadi dengan Python, Anda cenderung menggunakan nama deskriptif:
dan Anda bahkan menambahkan docstring yang menjelaskan apa yang dilakukan barang tersebut dan jenis apa yang diharapkan.
sumber
with open(FILE) as f: items = f.readlines()
misalnya, di mana variabelnyaf
sangat jelas, tetapi saya mendapatkan peringatan pylint. Ini membuat saya berubah menjadi flake8.f
sama sekali berbeda dari yangOptionList
dipanggil c. Terutama ketika saya tidak dapat mengubah namanya menjadifunction
karena bayangan built-in.Saat ini juga ada opsi untuk mengganti regexp. Yaitu jika Anda ingin mengizinkan karakter tunggal sebagai variabel:
Jadi,
pylint
akan cocok dengan PEP8 dan tidak akan membawa pelanggaran tambahan di atas. Anda juga dapat menambahkannya ke.pylintrc
.sumber
> 1.8.3
sepertinya inilah jawabannya. Dapat menempatkan ini dalam Anda.pylintrc
juga untuk konfigurasi permanen:variable-rgx=[a-z0-9_]{1,30}$
.Alasan yang lebih dalam adalah bahwa Anda mungkin ingat apa yang Anda inginkan
a
,b
,c
,x
,y
, danz
berarti ketika Anda menulis kode Anda, tetapi ketika orang lain membacanya, atau bahkan ketika Anda datang kembali ke kode Anda, kode menjadi jauh lebih mudah dibaca ketika Anda memberikan itu nama semantik. Kami tidak menulis sesuatu sekali di papan tulis dan kemudian menghapusnya. Kami sedang menulis kode yang mungkin bertahan selama satu dekade atau lebih, dan dibaca berkali-kali.Gunakan nama semantik. Nama semantik Saya telah menggunakan telah seperti
ratio
,denominator
,obj_generator
,path
, dll Mungkin perlu satu atau dua detik ekstra untuk mengetik mereka keluar, tapi saat Anda menyimpan mencoba untuk mencari tahu apa yang Anda tulis bahkan setengah jam dari itu adalah layak .sumber