26 puan yazan geniuskey 2024-07-14 | 5 yorum | WhatsApp'ta paylaş

Python Geliştirme için Modern İyi Uygulamalar

Stuart Ellis’in Python geliştirme için modern iyi uygulamaları Python geliştirirken dikkate alınması gereken önemli noktaları ele alıyor. Başlıca içerikler şöyle:

Python kullanımı

  • İşletim sistemine gömülü Python’u kullanmaktan kaçının: İşletim sistemiyle gelen Python eski bir sürüm olabilir.
  • Birden fazla sürümü destekleyen araçlarla Python kurun: pyenv veya mise gibi araçları kullanın.
  • Python’un güncel sürümünü kullanın: Güvenlik yamaları ve performans iyileştirmeleri için en yeni kararlı sürümü tercih edin.
  • Geliştirici uygulamalarını çalıştırmak için pipx kullanın: pipx ile uygulamaları yalıtılmış ortamlarda çalıştırın.
  • Proje araçları kullanın: PDM, Hatch, Mise, Rye öneriliyor.

Python projeleri geliştirme

Dil özellikleri

  • Type hinting kullanın: PEP 484, PEP 526.
  • String biçimlendirme için f-string kullanın: PEP 498.
  • Zaman dilimi farkında datetime nesneleri kullanın: PEP 615.

Uygulama tasarımı

  • print() yerine logging kullanın.
  • Yapılandırma için TOML biçimini kullanın: PEP 680.
  • Asenkron I/O’yu yalnızca gerektiğinde kullanın.

Kütüphaneler

  • Komut satırı girdilerini argparse ile işleyin.
  • Dosya ve dizin yollarını pathlib ile yönetin.
  • os.listdir() yerine daha hızlı ve verimli olan os.scandir() kullanın: PEP 471.
  • Harici komutları çalıştırmak için subprocess kullanın: PEP 324.
  • Web istemcisi olarak requests yerine httpx kullanın.

Proje için iyi uygulamalar

Daha fazla ayrıntı için yazının tamamına bakabilirsiniz.
.
.

Hacker News’te Python Modern Practices tartışmasının özeti

Python Modern Practices hakkındaki Hacker News tartışmasında çeşitli araçlar ve yöntemler üzerine kullanıcı görüşleri paylaşıldı:

  1. UV kullanımı öneriliyor: UV hızlı ve kullanımı kolay; sorun çıktığında da destek iyi. by screye
  2. Rye’dan söz ediliyor: Rye, Python interpreter pinning ve indirme desteği sunuyor; uv ile entegrasyonu planlanıyor. by rat87
  3. Mevcut araçların sadeliği vurgulanıyor: Mamba ortamı ve temel pip yeterli, araç değiştirme ihtiyacı hissedilmiyor. by helsinki
  4. Temel araçlar tercih ediliyor: pip, venv ve virtualenvwrapper ile çoğu sorun çözülebiliyor. by throwadobe
  5. Pipenv kullanımı savunuluyor: Pipenv eksiksiz bir çözüm olarak kullanıldı; neden daha yaygın olmadığını anlamadığını söylüyor. by routerl
  6. Poetry’nin sorunları: Poetry, Git commit sürüm tanımlayıcıları ekleyememek gibi sorunlar nedeniyle hayal kırıklığı yarattı. by alisonatwork
  7. Conda ve Mamba: Conda bağımlılık yönetiminde çok daha güçlü, Mamba ise daha hızlı. by wanderingmind
  8. Packaging sorunu: Python paketleme sorununun büyük ölçüde sosyal nedenleri var ve bu her zaman bir sorun olacak. by jampekka
  9. Pyenv için alternatif önerisi: Mise, Pyenv’den daha hızlı ve Node projelerini de destekliyor. by odie5533
  10. Pydantic modelleri ve dataclass’lar: Pydantic modelleri güçlü doğrulama sunuyor ama yavaş; dataclass’lar ise hafif ve verimli. by martinky24

Ayrıntılar için Hacker News tartışmasına göz atabilirsiniz.

5 yorum

 
kaydash 2024-07-15

Kütüphanelerin hafifletilmesine dair bir içerik yok gibi görünüyor.
miniconda3'ün sanal env'sini kullanıp kullanılmayan lib'leri kaldırarak portable şekilde dağıtmanın, yarn gibi dağıtık işleme sistemlerinde daha iyi performansı garanti ettiğini gördüm.

 
savvykang 2024-07-15

Neden pip-tools veya uv kullanmalıyız? Modern ya da iyi olduğuna dair ortada hiçbir dayanak yok.

 
savvykang 2024-07-15

pip bağımlılık belirticilerine (dependency specifier) neden hash eklenmesi gerektiğine dair, mevcut pip davranışında build sürümünün belirtilememesi sorunu var gibi görünüyor. Böyle bir bağlam olmadan sadece yönergeleri sıralayan kılavuzlar pek ikna edici görünmüyor.

 
jwseo 2024-07-16

Genelde hangisini kullanıyorsunuz??

 
savvykang 2024-07-16

Geçmişte yalnızca pip freeze ile çalışıyordum; Windows/Linux destekli kütüphaneleri seçerek çalıştım ve yama sürümünün değişmesinden kaynaklanan bir sorunla da henüz karşılaşmadım. Buna rağmen artık sorunun ne olduğunu öğrendiğim için gerekliliğini anlıyorum; ancak pip-tools veya uv biraz daha olgunlaştığında kullanmayı değerlendirmeyi planlıyorum.