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

single

Generator-Funksjoner

Sveip for å vise menyen

Note
Definisjon

En generatorfunksjon er en spesiell type funksjon som bruker nøkkelordet yield i stedet for return for å generere en sekvens av verdier. Når en generatorfunksjon kalles, returnerer den et iteratorobjekt, som kan itereres over for å hente ut verdier én om gangen.

Hovedfordelen med generatorfunksjoner er deres minneeffektivitet. I stedet for å generere hele sekvensen på forhånd og lagre den i minnet, produserer generatorer verdier løpende etter hvert som de trengs.

Hvordan yield fungerer

I motsetning til return, som avslutter funksjonen helt, pauser yield funksjonen og lagrer dens tilstand. Neste gang next() kalles, fortsetter generatoren nøyaktig der den slapp:

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 med en for-løkke – den kaller automatisk next() til generatoren er tom:

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
Merk

Når en generator er tom (ingen flere verdier å gi med yield), vil et kall til next() på den utløse en StopIteration-feil. En for-løkke håndterer dette automatisk.

Oppgave

Sveip for å begynne å kode

Implementer en generatorfunksjon even_numbers som gir ut partall innenfor et gitt intervall.

  1. Definer en generatorfunksjon even_numbers som tar to parametere: start og stop.
  2. Bruk en while-løkke for å iterere så lenge start er mindre enn eller lik stop.
  3. Bruk yield for å returnere start kun hvis det er et partall (delelig med 2).
  4. Øk start med 1 etter hver iterasjon.
  5. Bruk en for-løkke for å skrive ut alle genererte verdier.

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 4
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