Python kod kalitesi: tür denetimi, biçim ve proje araçları
Tür ipuçlarını mypy ile denetler, ruff ve black ile kodu tutarlı tutar, pre-commit ve modern proje araçlarıyla bakımı kolay projeler kurarsın.
Seviye 301 · 19 ders · 18 pratik lab
Dersler
Tür sistemi
- typing: koleksiyonlar, Optional ve birleşimler
- mypy ile tür denetimi
- Genel türler: TypeVar ve Generic
- TypedDict, Literal ve NewType
- Eski koda adım adım tür eklemek
- Kısa görev: mypy hatalarını sıfırla
Biçim ve statik analiz
- ruff ile hızlı denetim
- black ile tutarlı biçim
- Karmaşıklık ve kod kokuları
- bandit ile güvenlik denetimi
- pre-commit ile her işlemede denetim
- Kısa görev: dağınık projeyi denetimlerden geçir
Proje araçları
- pyproject.toml ile tek yapılandırma
- uv ile ortam ve kilit dosyası
- src düzeni ve paket sınırları
- Sürümleme ve değişiklik günlüğü
- Testleri ve denetimleri sürekli entegrasyonda çalıştırmak
- Kısa görev: kendi proje şablonunu hazırla
Bitirme
- Bitirme görevi: bir projeyi kalite kapısından geçir
Pratik lablar
- Eklenti arayüzünü Protocol ve overload ile tiplemek: Tipsiz eklenti arayüzünü Protocol, overload ve genel tiplerle tanımla; mypy strict modda hatasız geçsin ve yanlış eklenti derlemede yakalansın.
- Sihirli sayılara ad vermek: Kargo ücreti hesabındaki açıklamasız sayıları adlandırılmış sabitlere ve bir Enum'a taşı; testler yeşil, ruff temiz kalsın.
- Optional dönüşü doğru ele almak: None dönebilen arama fonksiyonuna doğru tür ipuçlarını ekle ve çağıranlardaki mypy hatalarını denetimlerle gider.
- Sözlük yüklerini TypedDict ile tanımlamak: Serbest biçimli sipariş sözlüğünü TypedDict ve Literal ile tanımla; yanlış anahtar kullanımını mypy yakalasın.
- Genel tipli kuyruk sınıfı yazmak: Any kullanan kuyruk sınıfını TypeVar ve Generic ile tür güvenli yap; karışık türlü kullanım mypy hatası versin.
- Karışan kimlikleri NewType ile ayırmak: Kullanıcı ve sipariş kimliklerini karıştıran hatayı NewType ile derleme öncesinde yakalanır hale getir.
- Eski modülü mypy strict'e geçirmek: Türsüz bir fatura modülünü adım adım türlendir, type: ignore kullanmadan mypy --strict hatasını sıfırla.
- ruff bulgularını gidermek: Kullanılmayan içe aktarmalar ve gölgelenen adlarla dolu modülü ruff bulgusu kalmayacak şekilde düzelt.
- Biçimleyici ve linter ayarlarını uzlaştırmak: black ile ruff'ın satır uzunluğu ve tırnak kurallarında çakışan ayarlarını pyproject.toml'da tek ayara indir.
- Karmaşık fonksiyonu parçalamak: Karmaşıklık puanı yirminin üstündeki kargo ücreti fonksiyonunu küçük fonksiyonlara böl; puan onun altına insin, testler geçsin.
- Kod kokularını temizlemek: Yinelenen bloklar, sihirli sayılar ve ölü kod içeren modülü davranışı değiştirmeden yeniden düzenle.
- bandit bulgularını sınıflandırmak: bandit raporundaki beş bulgudan gerçek olanları düzelt, yanlış alarmları gerekçeli nosec ile işaretle.
- pre-commit kancalarını kurmak: ruff, black ve mypy kancalarını içeren bir pre-commit yapılandırması yaz; hatalı bir commit engellenmeli.
- Gizli anahtar yakalayan yerel kanca yazmak: Commit edilen dosyalarda anahtar kalıplarını arayan yerel bir pre-commit kancası yaz ve izinli istisna dosyası desteği ekle.
- Dağınık ayar dosyalarını pyproject'e toplamak: setup.cfg, pytest.ini ve mypy.ini ayarlarını pyproject.toml'a taşı ve araçların aynı davrandığını doğrula.
- Projeyi src düzenine taşımak: Kök dizinden içe aktarıldığı için gizlenen paketleme hatasını src düzenine geçerek ortaya çıkar ve düzelt.
- Kilit dosyasıyla aynı ortamı kurmak: uv ile kilit dosyası üret, ortamı sıfırdan kur ve sürümlerin kilit dosyasıyla birebir aynı olduğunu göster.
- Tek komutluk kalite kapısı yazmak: Biçim, lint, tür ve test denetimlerini sırayla çalıştıran ve ilk hatada sıfırdan farklı kodla duran bir denetim betiği yaz.
Kurs hakkında
Tür ipuçlarını mypy ile denetler, ruff ve black ile kodu tutarlı tutar, pre-commit ve modern proje araçlarıyla bakımı kolay projeler kurarsın.
Ne öğreneceksin
- Tür sistemi
- Biçim ve statik analiz
- Proje araçları
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.