Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Äärettömät Generaattorit | Funktion Paluuarvon Määrittely
Python-funktioiden Opas
Osio 4. Luku 5
single

single

Äärettömät Generaattorit

Pyyhkäise näyttääksesi valikon

Muista, että yield keskeyttää generaattorin ja jatkaa sitä seuraavalla next()-kutsulla. Tähän asti näkemilläsi generaattoreilla oli selkeä päätepiste. Generaattorit ovat kuitenkin erityisen tehokkaita, kun ne yhdistetään äärettömään silmukkaan – arvojen tuottaminen loputtomasti ilman, että niitä tallennetaan muistiin.

Äärettömät generaattorit while True -rakenteella

Käyttämällä while True -silmukkaa generaattorin sisällä luodaan ääretön jono – jotain, mitä olisi mahdotonta tallentaa listana. Generaattori tuottaa seuraavan arvon vain, kun next() kutsutaan:

1234567891011
def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3

Riippumatta siitä, kuinka monta kertaa kutsut next(), generaattorilla on aina uusi arvo valmiina – se ei koskaan mene edelle eikä tallenna arvoja muistiin.

Äärettömän generaattorin hallinta

Koska generaattori toimii loputtomasti, sinun täytyy hallita, kuinka monta arvoa haet. Yleisin tapa on käyttää for-silmukkaa yhdessä range()-funktion kanssa:

12345678910
def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Note
Huomio

Älä koskaan iteroi ääretöntä generaattoria tavallisella for-silmukalla ilman pysäytysehtoa – se jatkuu loputtomiin ja kaataa ohjelmasi.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Luo ainutlaatuisia käyttäjä-ID:tä käyttämällä ääretöntä generaattorifunktiota. id_generator()-funktion tulee jatkuvasti tuottaa tunnisteita kuten "ID_1", "ID_2" jne.

  1. Alusta muuttuja count arvolla 1, koska tunnisteet alkavat ykkösestä.
  2. Käytä ääretöntä while-silmukkaa tunnisteiden jatkuvaan luomiseen.
  3. Käytä yield-komentoa palauttaaksesi nykyisen tunnisteen muodossa f"ID_{count}".
  4. Kasvata count-muuttujaa yhdellä jokaisen iteraation jälkeen.
  5. Alusta generaattoriobjekti id_gen kutsumalla id_generator().

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt