0Pricing
Python Academy · Ders

Üreteç İşlevleri

yield ile değerleri tembel olarak üretin

Üreteç İşlevleri, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Üreteç Nedir

Üreteç işlevi normal bir işlev gibi görünür, ancak return yerine (veya onunla birlikte) yield kullanır. Bu işlevi çağırmak gövdesini çalıştırmaz; yineleyici olan bir üreteç nesnesi döndürür.

def gen():
    yield 1
    yield 2
    yield 3

g = gen()
print(type(g).__name__)
print(list(g))

yield Yürütmeyi Duraklatır

next() işlevini her çağırdığınızda işlev bir yield ifadesine ulaşana kadar çalışır, o değeri döndürür ve durumunu dondurur. Sonraki çağrı, yield ifadesinin hemen sonrasından devam eder.

def steps():
    print('start')
    yield 'a'
    print('resumed')
    yield 'b'

g = steps()
print(next(g))
print(next(g))

Üreteç Üzerinde Döngü Kurma

Üreteç bir yineleyici olduğundan, for döngüsü onu otomatik olarak çalıştırır ve işlev sona erdiğinde durur (işlevin içinde StopIteration oluşturulur).

def countdown(n):
    while n > 0:
        yield n
        n -= 1

for x in countdown(4):
    print(x)

Tembel Değerlendirme

Üreteçler tembeldir: değerler yalnızca istendiğinde üretilir. Böylece çok büyük veya sonsuz dizileri çok fazla bellek kullanmadan modelleyebilirsiniz.

def naturals():
    n = 1
    while True:
        yield n
        n += 1

g = naturals()
print(next(g), next(g), next(g))

yield İfadeleri Arasında Durum

Yerel değişkenler yield noktaları arasında değerlerini korur. Üreteç, nerede kaldığını doğal olarak hatırlar; manuel bir dizin takibine gerek kalmaz.

def fib():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

g = fib()
print([next(g) for _ in range(7)])

Üreteçler ve Liste Oluşturma

Normal bir işlev listenin tamamını bir kerede oluşturup döndürür. Üreteç ise öğeleri gerektiğinde üretir. Dizi büyükse veya işlemi erken durdurma olasılığınız varsa üreteç kullanın.

def squares_list(n):
    result = []
    for i in range(n):
        result.append(i * i)
    return result

def squares_gen(n):
    for i in range(n):
        yield i * i

print(squares_list(5))
print(list(squares_gen(5)))

Erken Durdurma

Üretim tembel olduğundan, bir döngüden çıkabilirsiniz; üreteç kalan kısmı hiçbir zaman hesaplamaz.

def naturals():
    n = 1
    while True:
        print('producing', n)
        yield n
        n += 1

for x in naturals():
    if x > 3:
        break
    print('got', x)

Üreteç İçinde return

Üreteç içindeki tek başına bir return yalnızca üreteci sona erdirir (StopIteration oluşturur). Döndürdüğünüz herhangi bir değer, özel durumun value özniteliğine dönüşür; çoğu döngü bunu yok sayar.

def up_to(stop):
    i = 0
    while True:
        if i >= stop:
            return
        yield i
        i += 1

print(list(up_to(4)))

Üreteçler Tek Kullanımlıktır

Tüm yineleyiciler gibi üreteç de bir kez tüketilir. Tükendikten sonra hiçbir şey üretmez. Yeni bir üreteç almak için işlevi yeniden çağırın.

def gen():
    yield 1
    yield 2

g = gen()
print(list(g))
print(list(g))
print(list(gen()))

Üreteçlerle Filtreleme

Üreteçler temiz veri pipeline'ları oluşturmanızı sağlar. Burada yalnızca çift sayıları teker teker üretiyoruz.

def evens(numbers):
    for n in numbers:
        if n % 2 == 0:
            yield n

print(list(evens(range(10))))

Üreteçleri Zincirleme

Bir üreteç başka bir üreteci tüketebilir ve her aşamanın tembel olduğu çok aşamalı bir pipeline oluşturabilir.

def numbers(n):
    for i in range(n):
        yield i

def doubled(src):
    for x in src:
        yield x * 2

print(list(doubled(numbers(5))))

Hızlı Kontrol

Üreteç işlevlerini anlayıp anlamadığınızı sınayın.

Özet

Üreteç işlevlerini öğrendiniz:

  • yield, yerel durumu koruyarak yürütmeyi duraklatır ve devam ettirir.
  • İşlev çağrıldığında tembel bir üreteç nesnesi döner.
  • Bellek dostudurlar ve pipeline'lar ile sonsuz akışlar için idealdirler.
  • Her yineleyici gibi tek kullanımlıdırlar.

Sırada, daha da kısa olan üreteç ifadeleri var.

Sıkça Sorulan Sorular

“Üreteç İşlevleri” dersi ücretsiz mi?

Evet — “Üreteç İşlevleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Üreteç İşlevleri” dersinde ne öğreneceğim?

yield ile değerleri tembel olarak üretin Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Üreteç İşlevleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yineleyici Protokolü
  2. Üreteç İşlevleri
  3. Üreteç İfadeleri
  4. yield from ve Yetkilendirme
← Python Academy Sayfasına Dön