Bir üretici (generator) oluştur
Önceki egzersizlerde, çoğunlukla anlama (comprehension) söz dizimini kullanan üretici ifadeleri (generator expressions) yazdın. Üretici ifadeleri için comprehension söz dizimini kullanabilmek işi ne kadar da kolaylaştırdı!
Şimdi, videodan hatırlarsan sadece üretici ifadeleri yok; üretici fonksiyonlar da var. Üretici fonksiyonlar, tıpkı üretici ifadeler gibi tek bir değer döndürmek yerine bir değerler dizisi üretir (yield eder). Bir üretici fonksiyonu normal bir fonksiyon gibi tanımlanır, ancak bir değer ürettiğinde return yerine yield anahtar sözcüğünü kullanır.
Bu egzersizde, önceki egzersizde tanımladığın üretici ifadeyle benzer bir mekanizmaya sahip bir üretici fonksiyon oluşturacaksın:
lengths = (len(person) for person in lannister)
Bu egzersiz
Python Araç Kutusu
kursunun bir parçasıdırEgzersiz talimatları
- Tek parametresi
input_listolanget_lengths()fonksiyonunun başlığını tamamla. - Fonksiyon tanımındaki
fordöngüsünde,input_listiçindeki dizgelerin uzunluğunuyieldet. get_lengths()üretici fonksiyonunun ürettiği değerleri yazdıranfordöngüsünün yinelenebilir kısmını tamamla.lannisterlistesini geçirerekget_lengths()çağrısını kullan.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']
# Define generator function get_lengths
def ____:
"""Generator function that yields the
length of the strings in input_list."""
# Yield the length of a string
for person in input_list:
____
# Print the values generated by get_lengths()
for value in ____:
print(value)