Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Unendliche Generatoren | Spezifikation des Funktionsrückgabewerts
Python-Funktionen-Tutorial
Abschnitt 4. Kapitel 5
single

single

Unendliche Generatoren

Swipe um das Menü anzuzeigen

Erinnerung: yield pausiert einen Generator und setzt ihn beim nächsten Aufruf von next() fort. Bisher hatten die gezeigten Generatoren einen klaren Endpunkt. Besonders leistungsfähig werden Generatoren jedoch in Kombination mit einer Endlosschleife – sie erzeugen unbegrenzt Werte, ohne diese im Speicher zu halten.

Unendliche Generatoren mit while True

Die Verwendung einer while True-Schleife innerhalb eines Generators erzeugt eine unendliche Sequenz – etwas, das als Liste nicht speicherbar wäre. Der Generator liefert jeweils nur dann den nächsten Wert, wenn next() aufgerufen wird:

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

Egal wie oft Sie next() aufrufen, der Generator hat immer einen neuen Wert bereit – er läuft nie voraus und speichert keine Werte im Speicher.

Steuerung eines unendlichen Generators

Da der Generator unendlich läuft, muss gesteuert werden, wie viele Werte abgerufen werden. Die gebräuchlichste Methode ist die Verwendung einer for-Schleife mit 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
Hinweis

Niemals mit einer einfachen for-Schleife ohne Abbruchbedingung über einen unendlichen Generator iterieren – dies führt zu einer Endlosschleife und kann das Programm zum Absturz bringen.

Aufgabe

Wischen, um mit dem Codieren zu beginnen

Erzeugen von eindeutigen Benutzer-IDs mithilfe einer unendlichen Generatorfunktion. Die Funktion id_generator() soll fortlaufend Bezeichner wie "ID_1", "ID_2" usw. erzeugen.

  1. Initialisierung der Variablen count mit dem Wert 1, da die Bezeichner bei 1 beginnen.
  2. Verwendung einer unendlichen while-Schleife zur fortlaufenden Generierung von Bezeichnern.
  3. Einsatz von yield, um den aktuellen Bezeichner im Format f"ID_{count}" zurückzugeben.
  4. Inkrementierung von count um 1 nach jeder Iteration.
  5. Initialisierung des Generatorobjekts id_gen durch Aufruf von id_generator().

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 5
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt