Tekrar hoş geldiniz.
Kaputun altında işlerin nasıl yürüdüğünü anlamamızı istiyorum.
Bu yüzden size kendi for döngümüzü ve ardından kendi range fonksiyonumuzu uygulamak için iki
örnek göstereceğim.
Yani ilki bizim for döngümüz.
Bu yüzden özel döngü diyeceğim.
Kaputun altında, yaptığı tek şey bir yinelenebilir almaktır.
Ve sonra yineleyici diyeceğiz.
Şimdi bir yinelenebilire sahip olmamız için bir yinelenebilire eşit olacak.
İç fonksiyon dediğimiz bir şeyimiz var.
Bu, az önce aktardığımız yinelenebilir dosyayı kabul eder.
Şimdi bu müdahale, bu yinelenebilir üzerinde bir sonraki işlevi kullanmamıza izin verecek.
O yüzden benimle kal.
Doğru olsa da söyleyeceğim.
Denemek istiyorum.
Ve bu kabile bloğunda yineleyici diyeceğiz.
Ve eğer istersek, diyelim ki burada bir tür işlem gerçekleştirebiliriz.
Ya da sadece sonraki yineleyiciyi çağırabiliriz.
Ne var biliyor musun?
Yineleyicinin ne olduğunu görmek için buraya bir şey yazdıralım.
Ve son olarak, yinelemeyi durdur istisnasını aldığımızda durmamızı istiyorum.
Iterable'da daha fazla öğe olmadığını gördüğümüzü hatırlıyor musunuz?
Ve burada sadece kırılabiliriz.
Git ve şundan emin ol.
Colin'i doğru ayarladım.
Şimdi özel bir for döngüsü yaparsam ve ona bir, iki, üç şeklinde bir liste verirsem ve Çalıştır'a tıklarsam.
Şuna bir bak.
next kullanarak bazı yinelenebilir nesneler arasında döngü yapıyorum.
Ve bu nesnenin, 1'den 3'e kadar sürekli döngü içinde olmamıza rağmen aynı bellek alanında bulunduğunu
görüyorsunuz.
Diyelim ki NUM için yaptığımızda ve sonra ona bir liste verdiğimizde, dört döngünün kaputun altında nasıl çalıştığı budur.
Her şeyin içinden geçecek.
Onu bir yinelenebilir dosyaya dönüştürecek ve biz satırın sonunu bitirip döngüden çıkana kadar çalışmaya
devam edecek ve bir sonraki yineleyiciyi çağırmaya devam edecek.
Peki yineleyicinin gerçek değerlerini nasıl kontrol edeceğiz?
Unutmayın, bir sonraki fonksiyon bir sonraki öğe ne ise onun çıktısını verecektir.
Eğer buraya basarsam.
Ve Çalıştır'a tıklıyorum.
Anladım.
Bir, iki, üç.
Yani Çalıştır'a tıklamak istersem iki kere tıklayabilirim.
Ve işte oldu.
Loop'a özel ürünümüz listemizi ikiye katladı.
Bu kadar.
Döngüler gerçekten bu şekilde çalışır.
Peki ya menziller?
Kendi aralık fonksiyonumuzu oluşturabilir miyiz?
Kesinlikle yapabiliriz.
Ve bu eğlenceli bir tane.
Bir sınıf ve bu sınıfı oluşturalım çünkü günün sonunda sadece bir nesne oluşturacağız.
Bunun yapabileceğimiz eylemleri var.
Bu yüzden jeneratörüm için jeneratörüm diyeceğim ve bu bizim serimizin yaptığı şeyi taklit edecek.
Bu yüzden bir sınıfım olacak ve bu sınıfın bir init fonksiyonu olacak.
Bir benliğimiz, bir ilkimiz ve sonumuz olacak.
İşte bu şekilde bir aralık, bununla başlayıp bununla bitiyor diyebiliyoruz.
Ve burada önce tipik öz noktayı yapacağız.
Birinciye eşittir.
Ve sonra kendi kendine dott son eşittir son.
Burada bir sınıf kullanıyorum çünkü Python'da kendi veri tipimizi, kendi özel aralığımızı
oluşturduğumuzu unutmayın.
Şimdi örnek oluşturucumuz var ve ideal olarak gen eşittir diyebilmek ve genimi tıpkı bir aralıkta
olduğu gibi 0 ila 100 arasında olacak şekilde örnekleyebilmek istiyoruz.
Ve ideal olarak yapay zeka ve gen için şunu söyleyebiliriz.
Ve baskı.
Çünkü aralıkları bu şekilde kullanabiliyoruz, değil mi?
Peki bu işi nasıl yapabilirim?
Dunder yöntemlerimizi kullanabiliriz.
Eter'e nasıl sahip olduğumuzu hatırlayın.
Bir yineleyici almak ve bunlar üzerinde next kullanmak için.
Yayıcı olan ve yayıcı oluşturmamıza izin veren bir tanımlama dunder'ımız var.
Bir tarla.
Yani bizim durumumuzda self diyeceğim ve burada sadece gerçek sınıfı bu şekilde döndüreceğim.
Ve son olarak Jen'imizde bir sonraki fonksiyonu çalıştırabilmek istiyoruz çünkü dört döngünün nasıl çalıştığını gördük.
Önce itor'u sonra da bir sonraki M&M'i kullanabilmemiz gerekiyor.
Bu yüzden bir kez daha, uygun bir şekilde çağrılan bir dunder yöntemi kullanabiliriz.
Sıradaki.
Ve bu Python'da yerleşiktir.
Yani burada kendi kendime yaparsam.
Burada yapmak istediğimiz tek şey, bir sonraki adımda nasıl çalışmasını istediğimizi ona bildirmek.
Şey, eğer diyeceğim.
Ve nerede olduğumuzu takip etmek için bir tür duruma veya veriye ihtiyacımız var.
Jeneratörün nasıl çalıştığını hatırlayın.
Nerede olduklarını unutma.
Peki, bir sınıf nesnesi niteliği oluşturabiliriz.
Bu yüzden akımın sıfıra eşit olduğunu söyleyebilirim.
Yani şu anda yinelememizde bulunduğumuz yer burası ve benim gen nokta akımım diyelim.
Son noktadan daha az olduğu sürece, ki burada 100 olacaktır.
Eğer durum buysa.
Bir sayının gen nokta akımıma eşit olmasını istiyorum.
Gen nokta akımımı bir artırmak istiyorum çünkü şunu söylemek istiyoruz, hey, bir sonraki konuma geçiyoruz
ve sonra geri dönüyoruz.
Numara.
Çünkü bir sonraki kaputun altında böyle çalışır, değil mi?
Mevcut konumumuzu bir artırıyoruz ve basitçe bizim durumumuzda sıfır olacak olan
sayıyı döndürüyoruz.
Ve devam etmek istiyoruz, devam etmek, devam etmek.
Şu anki durum bir öncekinden daha büyük olmayana kadar.
Bu durumda, üzerinde yinelenecek başka bir şey kalmadığı için basitçe bir durdurma yinelemesi oluşturacağız.
Bakalım işe yarayacak mı?
Bunu çalıştıracağım.
Ve bak, hepsi işe yarıyor.
Jeneratörümde döngü oluşturabildim ve sıfırdan 99'a kadar I yazdırabildim.
Yine buradaki örneğimize dönecek olursak.
Bunun ilk başta biraz zor göründüğünü biliyorum.
Ancak tek yaptığım, bir BT işlevinin ilk ve son seçeneğine sahip olmasını istediğimi söylemekti.
Ve oluşturacağım bu nesne üzerinde yineleme yapabilmek isteyeceğim.
Ayrıca, önceki örneğimizden hatırlarsanız, for döngüsünün ihtiyaç duyduğu next'i de kullanabilmek
istiyorum.
Jen'de dört madde olduğunu söyleyeceğim.
Sadece içinden geç.
Bu artık bir yineleyici olduğu için üzerinde döngü yapabiliyorum ve bir sonraki değeri kullanabiliyorum
çünkü döngü yapmamıza ve sürekli olarak bir artırmamıza izin veriyorum.
Numarayı geri getirmeye devam edene kadar.
Gen akımım 100'den az olmayan 101 yüz olana kadar sayıyı döndürmeye devam edin.
Bu yüzden bir durdurma yinelemesi oluşturacak.
For döngüsü bizi otomatik olarak yakalar, böylece hata vermez ve döngüyü durdurur.
Kaputun altında menzil ile işler böyle yürür.
Şimdi, bunu bilmenize gerek yok.
Günlük hayatınızda sizden bunu uygulamanız istenmeyecek.
Ama size işlerin bu şekilde yürüdüğünü göstermek istedim.
Bence bu önemli.