Gaya Python: 5 alat untuk membersihkan kod Python anda

Secara teori, mana-mana kod Python adalah OK selagi betul secara sintaksis dan berjalan seperti yang diharapkan. Dalam praktiknya, anda ingin menerapkan gaya yang konsisten di seluruh projek anda, lebih baik gaya yang dipandu oleh cadangan gaya Python sendiri. Berita baiknya ialah anda tidak perlu melakukan ini dengan tangan. Ekosistem Python berisi berbagai perkakas, dari yang sangat fokus hingga yang luas, untuk memastikan bahawa kod sumber Python mematuhi konvensi gaya.

Dalam artikel ini kita akan mengkaji empat alat popular untuk memeriksa gaya kod Python, dan satu lagi untuk memformat semula kod agar konsisten. Python IDE seperti PyCharm atau Visual Studio Code menyokongnya sama ada secara asli atau dengan peluasan, sehingga mereka dapat dengan mudah disatukan ke dalam aliran kerja pengembangan anda.

Gaya Pikod

PEP 8 adalah dokumen yang menjelaskan konvensyen pengekodan Python - semuanya dari sama ada menggunakan tab atau ruang ketika membuat lekukan (gunakan empat ruang, masalah diselesaikan) hingga bagaimana menamakan pemboleh ubah dan objek. Pycodestyle adalah modul Python yang memeriksa kod Python terhadap cadangan PEP 8 dan menyampaikan laporan di mana kod yang dianalisis berada di luar spesifikasi.

Pycodestyle tidak memberikan pembaikan automatik untuk masalah; yang ada pada anda. Tetapi Pycodestyle sangat dapat dikonfigurasi, yang membolehkan anda menekan jenis ralat tertentu atau menghuraikan fail tertentu sahaja di pohon sumber. Dan hampir setiap IDE dengan sokongan Python juga menyokong Pycodestyle, jadi ini adalah pilihan mudah untuk keserasian sejagat, jika tidak berfungsi.

Banyak pelapis kod Python dapat berfungsi sebagai modul di Python, dan Pycodestyle tidak terkecuali. Anda dapat menggunakannya untuk mengesahkan kod secara terprogram, misalnya sebagai bagian dari rangkaian ujian.

Terbaik untuk:  Pengesahan asas pematuhan PEP 8.

Autopep8

Autopep8 mengambil tempat Pycodestyle berhenti. Ia menggunakan Pycodestyle untuk menentukan perubahan apa yang perlu dibuat, kemudian memformat semula kod agar sesuai dengan cadangan yang diberikan. Fail yang ada dapat diformat ulang di tempatnya atau ditulis ke fail baru. Autopep8 juga memperbaiki pelbagai masalah lain yang boleh merayap, seperti membersihkan kod yang ditukar dari Python 2 ke Python 3 atau fail yang mempunyai penanda akhir baris bercampur. Dan Autoprep8 dapat digunakan secara teratur untuk memformat semula kod yang dibekalkan sebagai rentetan.

Terbaik untuk: Menukar fail menjadi pematuhan PEP-8.

Serpihan8

Flake8 membungkus beberapa alat Python linting dan gaya kod dalam satu pakej. Bersama dengan PyFlakes, yang menggunakan pemeriksaan sintaks untuk mengesan kesalahan asas, dan Pycodestyle, yang telah kita bincangkan di atas, Flake8 menyediakan alat tambahan untuk memeriksa "kerumitan siklomatik" sebuah projek - iaitu, jumlah jalur kod bebas yang terdapat dalam program . (Kerumitan siklikomatik adalah metrik yang berpotensi berguna jika anda ingin memastikan modul asas tidak terlalu asas, misalnya.) Pada akhir setiap analisis, Flake8 memberikan metrik persentil untuk kualiti keseluruhan kod yang dianalisis, berguna cara untuk mendapatkan idea cepat mengenai bahagian pangkalan kode mana yang paling bermasalah.

Flake8 juga memiliki sistem plug-in, jadi linting dapat digabungkan dengan komit Git atau tindakan otomatis lainnya - misalnya, untuk memberi makan kod yang bermasalah kepada penyusun semula.

Terbaik untuk:  Menilai kualiti keseluruhan kod, dengan cadangan khusus.

Paip

Pylint mungkin merupakan penyekat Python yang paling banyak digunakan dan disokong di luar sana. Seperti yang lain, ia mencari kesilapan dan penyimpangan dari piawaian pengekodan dalam kod Python anda, dan menawarkan perubahan cara memperbaiki kesalahan tersebut.

Pylint juga boleh dikatakan sebagai penyemak kod yang paling lengkap , dalam arti bahawa ia dapat memberi amaran kepada anda mengenai banyak masalah dengan kod anda, beberapa di antaranya mungkin tidak relevan dalam konteks tertentu anda. Hasilnya boleh dibuat secara verbal, tetapi juga dapat disesuaikan untuk memenuhi kehendak proyek tertentu.

Pylint mencari lima kelas masalah yang semakin bermasalah. "Konvensyen" adalah pelanggaran PEP 8 atau peraturan konsistensi lain di Python. "Refactor" menunjukkan bau kod, kesalahan umum, atau kod yang dapat dikerjakan ulang agar lebih efisien atau kurang membingungkan, seperti impak siklik atau file dengan terlalu banyak garis serupa yang dapat diringkas menjadi fungsi umum. "Amaran" adalah masalah khusus Python, seperti kod yang tidak dapat dijangkau (semuanya selepas  return fungsi) atau kelas yang tidak mempunyai  __init__ kaedah. "Kesalahan" adalah pepijat kod sebenar, seperti pemboleh ubah yang tidak ditentukan, dan masalah "Fatal" adalah masalah yang menghalang Pylint daripada berjalan.

Sekali lagi, apa yang menjadikan Pylint paling berat dan paling berat adalah jumlah maklum balas yang diberikannya. Berita baiknya adalah bahawa bagi mereka yang ingin menyesuaikannya, kata-kata dan butiran Pylint dapat diubah setiap projek atau bahkan setiap fail. Selain itu, anda boleh menggunakan pelbagai plugin Pylint yang menambahkan jenis pemeriksaan tertentu, seperti kod yang terlalu rumit (rantai panjang  if, dll.) Atau penyisipan untuk pemasangan yang tidak digunakan lagi.

Terbaik untuk:  Kawalan kualiti sup-to-nuts untuk kod, dengan andaian anda tidak keberatan mengubah tetapannya untuk mengelakkan beban berlebihan.

Hitam

Hitam bukan alat analisis linter atau kod, tetapi alat untuk menegakkan gaya sebagai cara untuk memastikan kualiti kod yang lebih baik. Oleh sebab itu, alat ini sesuai dengan alat-alat lain yang dinyatakan di sini, kerana ini adalah cara untuk mengelakkan banyak kesalahan gaya asas.

Hitam digambarkan sebagai "pemformat kod tanpa kompromi" - tanpa kompromi kerana ia tidak mempunyai pilihan yang dapat diselesaikan kecuali panjang garis. Reformasi hitam kod Python menjadi gaya tunggal, konsisten, dan mudah dibaca, menggunakan peraturan dalaman untuk menangani masalah yang sukar seperti ungkapan multiline, bahkan yang diformat ulang secara konsisten.

Satu kelebihan yang disebut untuk menggunakan Black adalah ia menyelesaikan semua perselisihan mengenai pemformatan, sehingga menghilangkan "bikeshedding" dan membuat output linter juga tidak terlalu bising. Anda tidak perlu berdebat mengenai bagaimana memformat kod untuk projek, atau bahkan melakukannya secara manual. Anda hanya menggunakan Hitam dan selesai dengannya; anda bahkan boleh mengkonfigurasi banyak IDE untuk memformat kod secara automatik dengan Hitam. Kelebihan lain yang dituntut adalah bahawa ia membuat  git pembersihan menjadi lebih baik, kerana ia dapat mengurangkan jumlah perubahan yang dilakukan pada fail tertentu.

Terbaik untuk: Memasukkan pangkalan data menjadi kesesuaian gaya asas secara beramai-ramai .

Cara melakukan lebih banyak perkara dengan Python:

  • Cara bekerja dengan jenis data senarai Python
  • Cara mengemas aplikasi Python dengan BeeWare Briefcase
  • Cara menjalankan Anaconda berdampingan dengan Pythons yang lain
  • Cara menggunakan cermin mata hitam Python
  • Mulakan dengan async di Python
  • Cara menggunakan asyncio di Python
  • 3 langkah untuk baik pulih async Python
  • Cara menggunakan PyInstaller untuk membuat Python yang boleh dilaksanakan
  • Tutorial Cython: Cara mempercepat Python
  • Cara memasang Python dengan cara yang bijak
  • Cara menguruskan projek Python dengan Puisi
  • Cara menguruskan projek Python dengan Pipenv
  • Virtualenv dan venv: Persekitaran maya Python dijelaskan
  • Python virtualenv dan venv lakukan dan tidak boleh dilakukan
  • Penjelasan dan proses subtitle Python dijelaskan
  • Cara menggunakan debugger Python
  • Cara menggunakan timeit untuk profil kod Python
  • Cara menggunakan cProfile untuk profil kod Python
  • Cara menukar Python ke JavaScript (dan kembali lagi)