Zum Hauptinhalt springen

Die Yield-Funktion in Python - Funktionsprinzip und Anwendungsbeispiele

Python ist eine leistungsstarke und flexible Programmiersprache, die Entwicklern eine Vielzahl von Möglichkeiten bietet, mit Daten zu arbeiten. Eines der Merkmale der Sprache ist die Funktion yield Damit können Sie einen Wert aus einer Funktion zurückgeben und die Ausführung anhalten. In diesem Artikel werden wir die Funktionsweise der yield-Funktion untersuchen und Beispiele für ihre Verwendung angeben.

Funktion yield in Python wird es in Generatoren verwendet. Ein Generator ist eine Funktion, die ein Objekt zurückgibt, das iteriert werden kann. Generatoren in Python können sehr nützlich sein, wenn große Datenmengen Stück für Stück verarbeitet werden müssen oder wenn unendliche Sequenzen generiert werden müssen.

Stichwort yield die Funktion gibt an, dass die Funktion ein Generator ist. Wenn eine Funktion aufgerufen wird, wird sie nicht vollständig ausgeführt, sondern gibt ein Generatorobjekt zurück. Beim Aufrufen von Iterationsmethoden wie next(). die Funktion wird vor dem Schlüsselwort ausgeführt yield, gibt den angegebenen Wert zurück und hält die Ausführung an. Beim nächsten Aufruf der Methode next(). Die Funktion setzt die Ausführung von der Stelle fort, an der sie angehalten hat.

Funktionsweise der Yield-Funktion in Python

Bei jedem weiteren Aufruf der next() -Methode für dieses Objekt setzt die Funktion ihre Arbeit an der Stelle fort, an der der vorherige yield-Aufruf gestoppt wurde, und gibt den nächsten Wert in der Sequenz zurück.

Die Verwendung der Yield-Funktion ermöglicht eine effiziente Arbeit mit großen Datenmengen, da Elemente bei Bedarf generiert werden, anstatt alles auf einmal zu erstellen.

Beispiel für die Verwendung der Yield-Funktion:

def count_up_to(n):i = 0while i 

В данном примере функция count_up_to() содержит оператор yield, благодаря чему она превращается в генератор. При каждом вызове метода next() для объекта генератора numbers будет возвращаться следующее число в последовательности от 0 до n. После достижения числа n, вызов next() сгенерирует исключение StopIteration.

Что такое функция yield в Python

Функция yield в языке программирования Python представляет собой концепцию генераторов, которая позволяет создавать итераторы в удобной и эффективной форме. Ключевое слово yield обозначает точку возврата значения из функции, при этом сохраняется текущее состояние функции, чтобы она могла быть возобновлена с того же места, где она была приостановлена.

Функция, содержащая ключевое слово yield, обычно называется генератором. Она может быть вызвана, но не начинает выполняться сразу. Вместо этого она возвращает объект-генератор, который можно использовать для итерации по значениям, генерируемым функцией.

Рассмотрим следующий пример:

def fibonacci():a, b = 0, 1while True:yield aa, b = b, a + bfib = fibonacci()for i in range(10):print(next(fib))

Durch die Ausführung dieses Codes werden die ersten 10 Fibonacci-Zahlen ausgegeben: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Wie funktioniert die Yield-Funktion in Python

Die Yield-Funktion in Python ist ein leistungsfähiges Werkzeug zum Erstellen von Generatoren und zum Implementieren von faulen Berechnungen. Wenn eine Funktion eine yield-Anweisung enthält, wird sie in einen speziellen Zustand versetzt und kann Zwischenergebnisse zurückgeben, ohne die Ausführung zu beenden.

Wenn Sie eine solche Funktion im Code aufrufen, wird sie nicht vollständig ausgeführt, sondern gibt ein Generatorobjekt zurück, das zum Durchlaufen der von der Funktion zurückgegebenen Ergebnisse verwendet werden kann.

Wenn die next() -Anweisung für den Generator im Programm ausgeführt wird, setzt die Funktion die Ausführung an der Stelle fort, an der sie das vorherige Mal angehalten hat, und gibt das nächste Ergebnis als yield-Wert zurück. Daher gibt die Funktion für jeden Aufruf der next() -Anweisung ein Ergebnis zurück.

def countdown(n):while n > 0:yield nn -= 1for i in countdown(5):print(i)

In diesem Beispiel ist die Countdown-Funktion ein Generator, der Zahlen von einem gegebenen Wert auf Null zurückgibt. Bei jedem Aufruf der next() -Anweisung gibt der Generator eine weitere Zahl aus der Sequenz zurück, wobei die Ausführung der Funktion angehalten wird und der Status zwischen den Aufrufen beibehalten wird.

Dieser Ansatz spart Speicher und Zeit für die Ausführung des Programms, insbesondere wenn die Ergebnisse lang sind oder viel Speicher in Anspruch nehmen.

Beispiele für die Verwendung der Yield-Funktion in Python

Die yield-Funktion wird häufig in Python verwendet, um Generatoren zu erstellen, die es Ihnen ermöglichen, Wertsequenzen nach Bedarf zu generieren und gleichzeitig Speicher zu sparen. Hier sind einige Beispiele für die Verwendung der Yield-Funktion:

    Eine Folge von Zahlen generieren:

def generate_numbers(n):for i in range(n):yield inumbers = generate_numbers(5)for num in numbers:print(num)
def fibonacci(n):a, b = 0, 1for _ in range(n):yield aa, b = b, a + bfib_sequence = fibonacci(10)for num in fib_sequence:print(num)
def infinite_sequence():num = 0while True:yield numnum += 1sequence = infinite_sequence()for num in sequence:print(num)

Die Yield-Funktion ist ein leistungsfähiges Werkzeug in Python, mit dem Sie effizient mit großen Datenmengen arbeiten und Werte im laufenden Betrieb generieren können. Wenn Sie die Funktion yield verwenden, müssen Sie daran denken, dass sie anstelle bestimmter Werte einen Generator zurückgibt. Dies spart Speicher und verbessert die Programmleistung.