single
Generatorfunktionen
Swipe um das Menü anzuzeigen
Eine Generatorfunktion ist eine spezielle Art von Funktion, die das Schlüsselwort yield anstelle von return verwendet, um eine Sequenz von Werten zu erzeugen. Wenn eine Generatorfunktion aufgerufen wird, gibt sie ein Iterator-Objekt zurück, das durchlaufen werden kann, um die Werte einzeln abzurufen.
Der Hauptvorteil von Generatorfunktionen ist ihre Speichereffizienz. Anstatt die gesamte Sequenz im Voraus zu erzeugen und im Speicher zu speichern, erzeugen Generatoren Werte bei Bedarf.
Funktionsweise von yield
Im Gegensatz zu return, das die Funktion vollständig beendet, pausiert yield die Funktion und speichert ihren Zustand. Beim nächsten Aufruf von next() wird der Generator genau an der Stelle fortgesetzt, an der er unterbrochen wurde:
12345678910def 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
Ein Generator kann auch mit einer for-Schleife durchlaufen werden – diese ruft automatisch next() auf, bis der Generator erschöpft ist:
1234567def 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
Sobald ein Generator erschöpft ist (keine weiteren Werte mehr zum Ausgeben), löst ein Aufruf von next() darauf einen StopIteration-Fehler aus. Eine for-Schleife behandelt dies automatisch.
Wischen, um mit dem Codieren zu beginnen
Implementieren einer Generatorfunktion even_numbers, die gerade Zahlen in einem angegebenen Bereich liefert.
- Definition einer Generatorfunktion
even_numbersmit zwei Parametern:startundstop. - Verwendung einer
while-Schleife, um zu iterieren, solangestartkleiner oder gleichstopist. - Einsatz von
yield, umstartnur dann zurückzugeben, wenn es eine gerade Zahl ist (durch 2 teilbar). - Inkrementieren von
startum 1 nach jeder Iteration. - Verwendung einer
for-Schleife, um alle generierten Werte auszugeben.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen