Jeneratörler hakkında konuşalım.
Çok önemli bir anahtar terim ve oldukça ileri bir konu.
Neymiş onlar?
Üreteçler Python'da mevcuttur ve zaman içinde bir dizi değer üretmemizi sağlar.
Hmm.
Bu ne anlama geliyor?
Hadi inceleyelim.
Görüyorsunuz, aslında daha önce bir jeneratör öğrenmiştik.
Menzili hatırlıyor musun?
Menzil bir jeneratör.
Ama bu nedir?
Üreteç, Python'da yield adında özel bir anahtar kelime kullanmamıza izin veren ve fonksiyonları duraklatıp
devam ettirebilen özel bir şeydir.
Bunu küçük bir örnekle açıklayayım.
Menzil gibi bir şey kullandığımızda görürsünüz.
Ayet liste gibi bir şey söylüyor.
Diyelim ki bir aralığı listeye dönüştürüyoruz.
Bu şekilde.
Bir liste.
Aslında yaptığı şey, bilgisayarımızın belleğinde bir aralığa karşı diyelim ki 100 öğeden oluşan
dev bir liste oluşturmaktır.
Onları teker teker yaratır.
Sana göstereyim.
Eğer bir fonksiyon yaratırsam ve buna liste yap dersem.
Ve bu liste kabul edilecek.
Bir numara.
Ve bu liste yapar, sonuç boş bir diziye eşittir diyeceğiz, sonra I için an aralığında diyeceğim.
Sonuç nokta eki ekleyeceğiz ve eğlence için çarpalım.
Defalarca.
Ve son olarak sonucu döndürüyoruz.
Gördüğünüz gibi, burada yaptığımız gibi bir liste yaptığımızda, aslında bunu yapıyoruz.
Bir liste oluşturmak ve bellekte yaşayacak olan sonucu döndürmek için range kullanıyoruz.
Diyelim ki burada make list ile listemin make list 100'e eşit olacağını söyleyeceğim.
Yazdırdığımda.
Benim listem.
Ve Çalıştır'a tıklıyorum.
Oh.
Ve emin olun benim.
Buradaki parametre doğru isim.
Ve ekleme kelimesini heceleyebildiğimden emin ol.
Listemizi alıyoruz.
Ama şuradaki liste hafızamızda yaşıyor.
Listem bellekteki bir konuma işaret ediyor.
Yani bu şu anda yer kaplıyor.
Şimdi, menzil bir jeneratördür.
Ve bir jeneratör biraz farklıdır çünkü bu for döngüsünü yaptığımızda bu bellekte tutulmaz.
Bu aralık kendi başına, diyelim ki 0 ila 99 arasında dev bir liste oluşturmaz.
Ve sonra yinelemeye başlar.
Hayır, for döngüsü ile diyecek ki, hey, bir aralık olarak size önce sıfır sayısını vereceğim, sonra size bir
sayısını vereceğim, sonra iki sayısını, üç sayısını, dört sayısını 100'e kadar vereceğim.
Yani hafızada, asla ve asla benim listemde olduğu gibi bir liste oluşturmaz.
Ve bu oldukça telaşlı olabilir, değil mi?
Diyelim ki dev bir liste oluşturmak istiyoruz.
Şimdi, diyelim ki bir liste oluşturmak istiyorum.
Pekala.
Tüm bu dizi.
Eğer isteseydim, buraya basardım diyelim.
Bu dev liste ve ben çalıştır'a tıklıyorum.
Aman Tanrım.
Şunu görüyor musun?
Çok fazla bellek kullanıyorum.
Ve bittiğinde.
Ki hala yok.
Ancak o zaman bu listeyi kullanabilirim ve bu listeye bellekten erişecek.
Ve sonra bunu daha verimli bir şekilde kullanabiliyoruz, bir jeneratör kullanmak ve aslında bunları bellekte
yer kaplamadan tek seferde üretmek.
Şimdi bunu jeneratörlerle nasıl yapacağımızı ve onları gerçekten nasıl kullanacağımızı öğrenmemiz için bir sonraki derse geçmemiz ve bazı eski
bilgileri tekrar gözden geçirmemiz gerekiyor.
Bunun tamamlanmasına izin vereceğim.
Bu arada, bir sonraki videoda görüşmek üzere.
Güle güle.