26 poin oleh geniuskey 2024-07-14 | 5 komentar | Bagikan ke WhatsApp

Modern Good Practices for Python Development

Praktik modern terbaik Python menurut Stuart Ellis membahas hal-hal penting yang perlu dipertimbangkan saat mengembangkan dengan Python. Poin-poin utamanya adalah sebagai berikut:

Menggunakan Python

  • Hindari menggunakan Python bawaan sistem operasi: Python yang disertakan sistem operasi bisa jadi merupakan versi lama.
  • Instal Python dengan alat yang mendukung banyak versi: gunakan alat seperti pyenv atau mise.
  • Gunakan Python versi terbaru: pakai versi stabil terbaru untuk patch keamanan dan peningkatan performa.
  • Gunakan pipx untuk menjalankan aplikasi pengembang: jalankan aplikasi dalam lingkungan terisolasi melalui pipx.
  • Gunakan alat proyek: merekomendasikan PDM, Hatch, Mise, dan Rye.

Mengembangkan proyek Python

  • Rapikan format kode: gunakan Ruff.
  • Linting kode: merekomendasikan Ruff.
  • Pengujian dengan pytest: gunakan plugin terkait seperti pytest-randomly dan pytest-cov.
  • Packaging: gunakan paket wheel, dan bila perlu gunakan image container atau PyInstaller.

Tata bahasa bahasa

Desain aplikasi

  • Gunakan logging alih-alih print().
  • Gunakan format TOML untuk konfigurasi: PEP 680.
  • Gunakan I/O asinkron hanya jika memang diperlukan.

Library

  • Tangani input command line dengan argparse.
  • Tangani path file dan direktori dengan pathlib.
  • Gunakan os.scandir() yang lebih cepat dan efisien sebagai pengganti os.listdir(): PEP 471.
  • Saat menjalankan perintah eksternal, gunakan subprocess: PEP 324.
  • Sebagai klien web, gunakan httpx alih-alih requests.

Praktik terbaik proyek

Untuk detail lebih lanjut, lihat artikel lengkapnya.
.
.

Ringkasan diskusi Hacker News tentang Python Modern Practices

Diskusi Hacker News tentang Python Modern Practices memuat pendapat pengguna tentang berbagai alat dan metodologi:

  1. Rekomendasi menggunakan UV: Menggunakan UV itu cepat dan mudah, serta dukungannya bagus saat terjadi masalah. by screye
  2. Penyebutan Rye: Rye mendukung pinning dan pengunduhan interpreter Python, dan integrasi dengan uv direncanakan. by rat87
  3. Menekankan kesederhanaan alat saat ini: Lingkungan Mamba dan pip bawaan sudah cukup tanpa masalah, sehingga tidak merasa perlu mengganti alat. by helsinki
  4. Preferensi pada alat dasar: pip, venv, dan virtualenvwrapper dapat menyelesaikan sebagian besar masalah. by throwadobe
  5. Membela penggunaan Pipenv: Pipenv telah digunakan sebagai solusi lengkap, dan tidak tahu mengapa alat ini tidak lebih luas dipakai. by routerl
  6. Masalah pada Poetry: Poetry mengecewakan karena masalah seperti tidak bisa menambahkan pengenal versi commit Git. by alisonatwork
  7. Conda dan Mamba: Conda jauh lebih kuat dalam manajemen dependensi, dan Mamba lebih cepat. by wanderingmind
  8. Masalah packaging: Masalah packaging Python sebagian besar bersifat sosial dan akan selalu menjadi masalah. by jampekka
  9. Usulan pengganti Pyenv: Mise lebih cepat daripada Pyenv dan juga mendukung proyek Node. by odie5533
  10. Model Pydantic dan data class: Model Pydantic punya fitur validasi yang kuat tetapi lambat, sedangkan data class lebih ringan dan efisien. by martinky24

Untuk detail lebih lanjut, lihat diskusi Hacker News.

5 komentar

 
kaydash 2024-07-15

Tidak ada pembahasan tentang membuat library lebih ringan.
Menggunakan virtual env dari miniconda3 dan menghapus lib yang tidak terpakai untuk didistribusikan secara portabel terbukti menjamin performa yang lebih baik pada sistem pemrosesan terdistribusi seperti yarn.

 
savvykang 2024-07-15

Mengapa harus menggunakan pip-tools atau uv? Sama sekali tidak ada dasar untuk klaim bahwa itu modern atau bagus.

 
savvykang 2024-07-15

Tampaknya ada masalah pada perilaku pip saat ini yang membuat versi build tidak bisa ditentukan, yang menjadi alasan mengapa hash perlu disertakan dalam dependency specifier pip. Tanpa konteks seperti ini, panduan yang hanya mencantumkan pedoman rasanya kurang meyakinkan.

 
jwseo 2024-07-16

Biasanya pakai yang mana??

 
savvykang 2024-07-16

Selama ini saya bekerja hanya dengan pip freeze; saya juga memilih library yang mendukung Windows/Linux saja, dan sejauh ini belum pernah ada masalah akibat perubahan versi patch. Meski begitu, sekarang saya sudah tahu masalahnya jadi saya paham kebutuhannya, hanya saja saya berencana mempertimbangkan penggunaan pip-tools atau uv saat keduanya sudah lebih matang.