Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Generatorfunktioner | Specifikation av funktions returvärde
Pythonfunktioner Handledning
Avsnitt 4. Kapitel 4
single

single

Generatorfunktioner

Svep för att visa menyn

Note
Definition

En generatorfunktion är en speciell typ av funktion som använder nyckelordet yield istället för return för att generera en sekvens av värden. När en generatorfunktion anropas returnerar den ett iteratorobjekt, vilket kan itereras över för att hämta värden ett i taget.

Den främsta fördelen med generatorfunktioner är deras minnes­effektivitet. Istället för att generera hela sekvensen på förhand och lagra den i minnet, producerar generatorer värden i realtid när de behövs.

Hur yield fungerar

Till skillnad från return, som avslutar funktionen helt, pausar yield funktionen och sparar dess tillstånd. Nästa gång next() anropas återupptas generatorn exakt där den pausades:

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 också iterera över en generator med en for-loop – den anropar automatiskt next() tills generatorn är slut:

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
Observera

När en generator är uttömd (inga fler värden att yielda), kommer ett anrop av next() på den att utlösa ett StopIteration-fel. En for-loop hanterar detta automatiskt.

Uppgift

Svep för att börja koda

Implementera en generatorfunktion even_numbers som returnerar jämna tal inom ett givet intervall.

  1. Definiera en generatorfunktion even_numbers som tar två parametrar: start och stop.
  2. Använd en while-loop för att iterera så länge start är mindre än eller lika med stop.
  3. Använd yield för att returnera start endast om det är jämnt (delbart med 2).
  4. Öka start med 1 efter varje iteration.
  5. Använd en for-loop för att skriva ut alla genererade värden.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt