Was ist ein 'Generator' in Python und wie unterscheidet er sich von einer normalen Funktion?

Ein Verständnis von Python-Generatoren und deren Unterschied zu normalen Funktionen

Ein Generator in Python ist eine Art von spezieller Funktion, die Werte einzeln anstatt auf einmal ausgibt. Er wird durch das Schlüsselwort "yield" innerhalb der Funktion definiert. Der größte Vorteil eines Generators liegt in seiner Fähigkeit, den Code-Zustand zu halten und von dort aus fortzufahren, wo er aufgehört hat, wenn er erneut aufgerufen wird.

Die Funktionsweise eines Generators

Ein Generator verhält sich wie eine normale Funktion, bis er auf das Schlüsselwort "yield" stößt. Hier wird die Ausführung der Funktion unterbrochen und ein Wert zurückgegeben, ohne die lokalen Variablen der Funktion zu vernichten.

Im Gegensatz zu normalen Funktionen, die bei jedem Aufruf den Code von vorne starten, setzt ein Generator die Ausführung aus der Code-Zeile fort, die auf das Schlüsselwort "yield" folgt, wenn er erneut aufgerufen wird.

Beispiel für einen Generator in Python

Hier ist ein einfacher Generator, der die Werte 1 bis 3 einzeln ausgibt:

def einfacher_generator():
    yield 1
    yield 2
    yield 3

Wir können diesen Generator verwenden und seine Rückgabewerte erhalten:

gen = einfacher_generator()

print(next(gen))  # gibt 1 aus
print(next(gen))  # gibt 2 aus
print(next(gen))  # gibt 3 aus

Generatoren gegenüber normalen Funktionen

Der Hauptunterschied zwischen Generatoren und normalen Funktionen in Python liegt in ihrer Art und Weise, Werte zu liefern. Während eine normale Funktion alle Werte auf einmal zurückgibt, liefert ein Generator die Werte einzeln.

Außerdem halten Generatoren Informationen über ihren Zustand zwischen einzelnen Aufrufen, während normale Funktionen dies nicht tun. Dadurch sind Generatoren besonders nützlich für große Datensätze, bei denen nicht alle Werte gleichzeitig im Speicher gehalten werden müssen, oder für Funktionen, die eine Sequenz von Ergebnissen erzeugen.

Hoffentlich verstehen Sie jetzt, was ein "Generator" in Python ist und wie er sich von einer normalen Funktion unterscheidet. Es ist wichtig zu beachten, dass sowohl Generatoren als auch normale Funktionen ihre eigenen Anwendungsfälle und Vorteile haben, und der geeignete Typ sollte basierend auf den spezifischen Anforderungen des Codes verwendet werden.

Finden Sie das nützlich?