0Pricing
Python Academy · Ders

yield Anahtar Sözcüğü

Özel yineleyiciler için yield kullanan üreteç işlevleri yazın.

yield Anahtar Sözcüğü, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. 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.

Giriş

Üreteç işlevleri, değer dizilerini tembel biçimde üretmek için yield kullanır ve her yield arasında çalışmayı duraklatır.

yield Nedir?

yield içeren bir işlev, üreteç işlevdir. next() çağrılarının her biri, son yield noktasından devam eder.
def count_up(n):
    for i in range(n):
        yield i
for x in count_up(3):
    print(x)

Üreteç İşlevi ve Normal İşlev Karşılaştırması

Bir üreteç işlevini çağırmak, bir üreteç nesnesi döndürür; henüz hiçbir kod çalıştırmaz. Kod, siz yineledikçe çalışır.
def gen():
    print('start')
    yield 1
    print('middle')
    yield 2
g = gen()  # no print yet
print(next(g))  # 'start', then 1

Sonsuz Üreteç

def naturals(n=0): while True: yield n; n+=1, sonsuz bir dizidir. islice veya break ile birlikte kullanın.
def naturals(n=0):
    while True:
        yield n
        n += 1
import itertools
print(list(itertools.islice(naturals(), 5)))

yield from

yield from sub_gen(), bir alt üreteci devreder ve tüm değerleri iletir. for x in sub: yield x ile eşdeğerdir.
def chain(*iters):
    for it in iters:
        yield from it
print(list(chain([1,2], [3,4], [5])))

send() ile Değer Gönderme

gen.send(value), üreteci devam ettirir VE yield ifadesinin sonucu hâline gelen bir değer iletir.
def accumulator():
    total = 0
    while True:
        n = yield total
        if n is None: break
        total += n
g = accumulator()
next(g)  # prime
print(g.send(10))
print(g.send(5))

Üreteç Durumu

Bir üreteç her yield noktasında duraklar ve yerel değişkenlerini çağrılar arasında korur; bu, doğal bir eş yordamdır.
def stateful():
    seen = set()
    while True:
        item = yield
        seen.add(item)
        yield len(seen)
g = stateful()
next(g); g.send('a'); print(next(g)); g.send('b'); print(next(g))

Üreteci Kapatma

gen.close(), üretecin içinde GeneratorExit oluşturur. Temizleme işlemleri için üretecin içinde try/finally kullanın.
def resource_gen():
    try:
        while True:
            yield
    finally:
        print('cleaned up')
g = resource_gen()
next(g)
g.close()

StopIteration ve Return

Bir üreteçteki return value, StopIteration istisnasının value özniteliğini ayarlar. Bu değer, yield from tarafından alınır.
def gen_with_return():
    yield 1
    yield 2
    return 'done'
g = gen_with_return()
try:
    while True: print(next(g))
except StopIteration as e:
    print('returned:', e.value)

Fibonacci Üreteci

Üreteçler sonsuz matematiksel diziler için son derece uygundur: yield a; a, b = b, a+b
def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b
import itertools
print(list(itertools.islice(fibonacci(), 10)))

__iter__ İçeren Üreteçler ve Sınıflar

Üreteçler, __iter__ ve __next__ içeren bir sınıf yazmaktan daha basittir. Doğrudan diziler için üreteçleri kullanın.
# Generator is simpler than:
# class Counter:
#     def __iter__(self): return self
#     def __next__(self): ...
print('generators simplify iterators')

Hızlı Kontrol

yield from sub(), bir üreteç işlevinde ne yapar?

Özet

yield bir üretici işlevini duraklatır. Üretici işlevler bir üretici nesnesi döndürür. yield from, alt üreticilere yetki devreder. send() içeri değer aktarır. close() temizleme işlemini başlatır.

Devam Edin

Harika! Becerilerinizi derinleştirmek için sonraki derse geçin.

Sıkça Sorulan Sorular

“yield Anahtar Sözcüğü” dersi ücretsiz mi?

Evet — “yield Anahtar Sözcüğü” 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.

“yield Anahtar Sözcüğü” dersinde ne öğreneceğim?

Özel yineleyiciler için yield kullanan üreteç işlevleri yazın. 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 4. dersidir.

“yield Anahtar Sözcüğü” 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. Liste Kapsamaları
  2. Küme ve Sözlük Kapsamaları
  3. Üreteç İfadeleri
  4. yield Anahtar Sözcüğü
← Python Academy Sayfasına Dön