Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Uendelige generatorer | Spesifikasjon av funksjonens returverdi
Python-funksjoner Veiledning
Seksjon 4. Kapittel 5
single

single

Uendelige generatorer

Sveip for å vise menyen

Husk at yield pauser en generator og gjenopptar den ved neste next()-kall. Så langt har generatorene du har sett hatt et tydelig stoppunkt. Men generatorer blir spesielt kraftige når de kombineres med en uendelig løkke – de produserer verdier uendelig uten å lagre dem i minnet.

Uendelige generatorer med while True

Ved å bruke en while True-løkke inne i en generator opprettes en uendelig sekvens – noe som ville vært umulig å lagre som en liste. Generatoren produserer kun neste verdi når next() kalles:

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

Uansett hvor mange ganger du kaller next(), vil generatoren alltid ha en ny verdi klar – den ligger aldri foran eller lagrer verdier i minnet.

Kontrollere en uendelig generator

Siden generatoren kjører uendelig, må du kontrollere hvor mange verdier du henter ut. Den vanligste måten er å bruke en for-løkke med range():

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
Merk

Aldri iterer over en uendelig generator med en vanlig for-løkke uten en stoppbetingelse – det vil kjøre evig og krasje programmet ditt.

Oppgave

Sveip for å begynne å kode

Generer unike bruker-ID-er ved hjelp av en uendelig generatorfunksjon. id_generator()-funksjonen skal kontinuerlig produsere identifikatorer som "ID_1", "ID_2" osv.

  1. Initialiser variabelen count med verdien 1, siden identifikatorene starter fra 1.
  2. Bruk en uendelig while-løkke for å kontinuerlig generere identifikatorer.
  3. Bruk yield for å returnere gjeldende identifikator i formatet f"ID_{count}".
  4. Øk count med 1 etter hver iterasjon.
  5. Initialiser generatorobjektet id_gen ved å kalle id_generator().

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 5
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt