Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Generatorfunktioner | Specifikation af Funktions Returværdi
Python Funktioner Tutorial
Sektion 4. Kapitel 4
single

single

Generatorfunktioner

Stryg for at vise menuen

Note
Definition

En generatorfunktion er en særlig type funktion, der bruger nøgleordet yield i stedet for return til at generere en sekvens af værdier. Når en generatorfunktion kaldes, returnerer den et iteratorobjekt, som kan itereres over for at hente værdier én ad gangen.

Den primære fordel ved generatorfunktioner er deres hukommelseseffektivitet. I stedet for at generere hele sekvensen på forhånd og gemme den i hukommelsen, producerer generatorer værdier løbende efter behov.

Sådan fungerer yield

I modsætning til return, som afslutter funktionen helt, pauser yield funktionen og gemmer dens tilstand. Næste gang next() kaldes, genoptager generatoren præcis der, hvor den slap:

12345678910
def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3

Du kan også iterere over en generator ved hjælp af en for-løkke – den kalder automatisk next() indtil generatoren er udtømt:

1234567
def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Note
Bemærk

Når en generator er udtømt (ingen flere værdier at yield'e), vil et kald til next() på den udløse en StopIteration-fejl. En for-løkke håndterer dette automatisk.

Opgave

Swipe to start coding

Implementér en generatorfunktion even_numbers, der returnerer lige tal inden for et givet interval.

  1. Definér en generatorfunktion even_numbers, som tager to parametre: start og stop.
  2. Brug en while-løkke til at iterere, så længe start er mindre end eller lig med stop.
  3. Brug yield til kun at returnere start, hvis det er et lige tal (deleligt med 2).
  4. Øg start med 1 efter hver iteration.
  5. Brug en for-løkke til at udskrive alle genererede værdier.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt