Python yineleyiciler, üreteçler ve işlevsel araçlar
Yineleme protokolünü, üreteçleri, itertools ve functools'u kullanarak büyük veriyi belleği doldurmadan, kısa ve okunur kodla işlersin.
Seviye 201 · 17 ders · 15 pratik lab
Dersler
Yineleme
- Yineleme protokolü: iter ve next
- Kendi yineleyici sınıfını yazmak
- Üreteçler ve yield
- Üreteç ifadeleri ve tembel değerlendirme
- yield from ile üreteç boru hatları
- Kısa görev: 1 GB'lık günlüğü belleği doldurmadan süz
itertools
- Sonsuz yineleyiciler: count, cycle, repeat
- Kombinasyon ve permütasyon: product, combinations
- groupby, chain, islice ve batched
- Kısa görev: oturum kayıtlarını kullanıcıya göre grupla
İşlevsel araçlar
- Birinci sınıf fonksiyonlar ve kapanışlar
- functools: partial ve reduce
- lru_cache ve cache ile sonuçları saklamak
- operator modülü ve sıralama anahtarları
- singledispatch ile türe göre davranış
- Kısa görev: fonksiyon zinciriyle rapor hattı kur
Bitirme
- Bitirme görevi: akış hâlinde CSV özetleyici
Pratik lablar
- Sıralı günlükleri tembelce birleştirmek: Zamana göre sıralı birkaç günlük dosyasını belleğe almadan heapq.merge ile birleştir ve dakikadaki en yoğun on kaynağı üret.
- Geri sayım yineleyicisi yazmak: __iter__ ve __next__ ile verilen sayıdan sıfıra inen bir yineleyici sınıfı yaz; bitince StopIteration yükselsin.
- Sayfalı sonuçları tek tek gezmek: Sayfa sayfa kayıt döndüren sahte bir istemciyi tek tek kayıt veren yinelenebilir bir sınıfla sar; son sayfada temiz dursun.
- Tükenen yineleyici hatasını bulmak: İkinci kez gezildiğinde boş dönen raporun nedenini bul ve sınıfı her seferinde taze yineleyici verecek şekilde düzelt.
- Ölçüm dosyasını üreteçle okumak: Büyük bir ölçüm dosyasını satır satır okuyup sayıya çeviren bir üreteç fonksiyonu yaz; boş satırlar atlansın.
- Listeyi üreteç ifadesine çevirmek: Tüm kayıtları listede toplayan toplam hesabını üreteç ifadesiyle yeniden yaz ve tracemalloc ile bellek farkını göster.
- Sipariş akışı için üreteç hattı: Kestane Market siparişlerini oku, ayrıştır, süz ve topla adımlarına ayıran dört üreteçli bir hat kur; hiçbir adım listeye çevirmesin.
- İç içe menüyü yield from ile düzleştirmek: Keyfi derinlikte iç içe menü yapısındaki tüm yaprakları yield from ile tembel biçimde üret; derin yapılarda da çalışsın.
- Vardiya sırasını cycle ile dağıtmak: Narçiçeği Hastanesi'nin hemşire listesini cycle ve islice ile günlere sırayla dağıt ve ilk on dört günü döndür.
- Turnuva eşleşmelerini combinations ile üretmek: Takım listesinden her ikilinin bir kez karşılaştığı fikstürü combinations ile üret ve maç sayısını doğrula.
- groupby öncesi sıralamayı unutmamak: Aynı şehri birden çok kez listeleyen groupby raporunu düzelt ve her şehir için tek bir toplam satırı üret.
- Kayıtları yüzerli paketlerle göndermek: Sonsuz olabilecek bir kayıt akışını batched ve chain ile yüzerli paketlere böl; son eksik paket de gönderilsin.
- partial ile hazır dönüştürücüler üretmek: Genel bir birim çevirme fonksiyonundan partial ile km-mil ve kg-libre dönüştürücüleri üret.
- Kur sorgusunu lru_cache ile önbelleğe almak: Yavaş bir kur sorgulama fonksiyonuna lru_cache ekle, liste argümanı yüzünden çıkan hatayı gider ve çağrı sayısını testle kanıtla.
- Türe göre dışa aktarmayı singledispatch ile ayırmak: isinstance zinciriyle yazılmış dışa aktarma fonksiyonunu singledispatch ile ayır ve yeni bir tarih türü için kayıt ekle.
Kurs hakkında
Yineleme protokolünü, üreteçleri, itertools ve functools'u kullanarak büyük veriyi belleği doldurmadan, kısa ve okunur kodla işlersin.
Ne öğreneceksin
- Yineleme
- itertools
- İşlevsel araçlar
- Bitirme
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
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 201 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.