Heim > Backend-Entwicklung > Python-Tutorial > Was bewirkt das Python-Schlüsselwort „yield' und wie werden Generatoren verwendet?

Was bewirkt das Python-Schlüsselwort „yield' und wie werden Generatoren verwendet?

Mary-Kate Olsen
Freigeben: 2024-12-22 17:11:11
Original
594 Leute haben es durchsucht

What Does Python's `yield` Keyword Do and How Are Generators Used?

Was genau macht „yield“ in Python?

„yield“ ist ein einzigartiges Schlüsselwort in Python, mit dem Sie Generatoren erstellen können. Dabei handelt es sich um einen speziellen Typ von Iterierbaren. Iterables stellen Folgen von Werten dar, über die Sie iterieren können, z. B. Listen und Zeichenfolgen. Allerdings unterscheiden sich Generatoren von diesen dadurch, dass nicht alle Werte im Speicher gespeichert werden. Stattdessen erzeugen sie Werte im laufenden Betrieb, einen nach dem anderen.

Um Generatoren zu verstehen, ist es hilfreich, mit Iterablen zu beginnen. Iterables sind Objekte, die die Methode __iter__() implementieren und es Ihnen ermöglichen, ein Iteratorobjekt über die Funktion iter() abzurufen. Iteratoren implementieren die Methode __next__(), die das nächste Element in der Sequenz zurückgibt und eine StopIteration-Ausnahme auslöst, wenn keine Elemente mehr übrig sind.

Generatoren und die Rolle von „yield“

Generatoren sind eine Art Iterable, die mit dem Schlüsselwort „yield“ erstellt wird. Generatoren sind einzigartig, weil sie die Ausführung bei jeder „yield“-Anweisung anhalten, sodass Sie jeweils einen Wert abrufen können. Wenn Sie den Generator verwenden, setzt er die Ausführung an der Stelle fort, an der er angehalten hat, und generiert den nächsten Wert. Dieser Vorgang wird fortgesetzt, bis der Generator alle seine Werte erschöpft hat. An diesem Punkt wird eine StopIteration-Ausnahme ausgelöst.

So verwenden Sie Generatoren

Um Generatoren zu verwenden, erstellen Sie eine Generatorfunktion, die eine oder enthält weitere „Ertrags“-Aussagen. Diese Funktion gibt ein Generatorobjekt zurück, über das mithilfe einer „for“-Schleife iteriert werden kann.

Hier ist ein Beispiel:

def generate_numbers():
    for i in range(5):
        yield i
Nach dem Login kopieren

In diesem Beispiel ist „generate_numbers()“ eine Generatorfunktion, die iteriert über die Zahlen von 0 bis 4 und liefert jeden Wert. Um diesen Generator zu verwenden, können Sie ihn mithilfe einer „for“-Schleife durchlaufen:

for number in generate_numbers():
    print(number)
Nach dem Login kopieren

Dieser Code gibt die Zahlen von 0 bis 4 aus.

Vorteile von Generatoren

Generatoren bieten mehrere Vorteile gegenüber herkömmlichen Iterables:

  • Speicher Effizienz: Im Gegensatz zu iterierbaren Generatoren speichern Generatoren nicht alle Werte gleichzeitig im Speicher. Dies macht sie ideal für die Generierung großer Sequenzen oder von Sequenzen, deren Größe nicht im Voraus bekannt ist.
  • Lazy Evaluation: Generatoren erzeugen Werte nur dann, wenn sie benötigt werden, was Rechenzeit und Ressourcen spart.
  • Flexibilität: Generatoren können mehrfach wiederverwendet werden, ohne dass sie neu initialisiert werden müssen, was sie praktisch für die Erstellung von Pipelines und anderen komplexen Anwendungen macht Operationen.

Fazit

„yield“ ist ein leistungsstarkes Schlüsselwort in Python, mit dem Sie Generatoren erstellen können, eine einzigartige Art von Iteration, die Werte bei Bedarf generiert. Generatoren bieten Vorteile wie Speichereffizienz, verzögerte Auswertung und Flexibilität, was sie zu einem wertvollen Werkzeug in verschiedenen Programmierszenarien macht.

Das obige ist der detaillierte Inhalt vonWas bewirkt das Python-Schlüsselwort „yield' und wie werden Generatoren verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage