Ana sayfa Genel Python – Generatorlar

Python – Generatorlar

3474
205
PAYLAŞ

Generatorların Oluşturulması ve Kullanılması

Bu derste Pythondaki generatorları anlamaya çalışacağız.

Generatorlar Pythonda iterable objeler (örnek olarak fonksiyonlar) oluşturmak için kullanılan objelerdir ve bellekte herhangi bir yer kaplamazlar. Örneğin, 100.000 tane değer üretip, bu değerleri bir listede tutmak bellekte oldukça fazla yer kaplayacaktır. O yüzden bu işlemi gerçekleştiren bir fonksiyonu generator fonksiyon şeklinde yazmak oldukça mantıklı olacaktır. Generatorları anlamak için isterseniz bir fonksiyonu ilk olarak generator kullanmadan yazmaya çalışalım.

İsterseniz bu fonksiyonu bir de generator kullanarak yazmaya çalışalım. Generatorlerin değer üretmesi için yield anahtar kelimesini kullanacağız.

Yazdığımız ilk fonksiyonda 1’den 6’ya kadar gidip her bir değerin karesini sonuç isimli listeye atıyoruz ve daha sonra bu listeyi dönüyoruz.Yani bellekte liste değişkenin içinde 1,4,9,16,25 değerleri tutuluyor.

Generatorle yazdığımız 2.fonksiyonda yield anahtar kelimesiyle değerleri ürettiğimizi sanıyoruz. Ama aslında bu fonksiyonu çağırınca bize sadece bir tane generator objesi dönüyor ve biz sadece generator objesinin değerlerine ulaşmaya çalıştığımızda değerler tek tek üretiliyor. Yani kısacası bellekte değerler tutulmuyor. Bu generator objesinin üzerinde bir tane iterator oluşturarak durumu daha iyi anlamaya çalışalım.

Aslında generator objesi sadece değerlere ulaşmak istediğimiz zaman yield anahtar kelimesini kullanıp değer üretiyor. Yani generatorler sadece biz değerlere ulaşmak istersek çalışıyor. İşte generatorlerin mantığı tamamıyla bu şekilde ! Şimdi de list comprehensionları generatorlara çevirmeye çalışalım.

Böyle bir list comprehension’ı generator objesine çevirmek için [] yerine () kullanıyoruz.

İsterseniz konuyu anlamak için bir tane daha generator fonksiyonu oluşturalım.

Buradaki bu kadar işlemi listelerde tutmak o kadar mantıklı değil. Onun yerine bellekte yer kaplamayan ve sadece her ulaşmaya çalıştığımızda değer üreten(yield) generator fonksiyonları kullanmak daha mantıklı olacaktır.

Peki generatorlar Pythonda nerede kullanılıyor ? Aslında bizim daha önce öğrendiğimiz range fonksiyonu Pythonda generatorlar yazılmış bir fonksiyondur.

İşte generatorların genel mantığı bu şekilde. Anlamadığınız bir yer olursa lütfen çekinmeden sorun. Bir sonraki derste görüşmek üzere.

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here