Dieser Artikel bietet Ihnen eine Einführung in das Python-Schlüsselwort yield. Freunde in Not können darauf verweisen.
Coroutinen sind eine Möglichkeit, asynchronen I/O-Code in Tornado zu entwickeln. Die Coroutine verwendet das Python-Schlüsselwort yield, um die Ausführung des Aufrufers anzuhalten und fortzusetzen. Bevor wir etwas über Coroutinen lernen, müssen wir uns zunächst mit dem Konzept und der Verwendung von Yield vertraut machen. Um Yield zu verstehen, müssen wir zunächst das Konzept von Iteratoren verstehen.
In Python werden Iteratoren, die mit dem Schlüsselwort yield definiert werden, auch [Generatoren] genannt
1. Iteratoren (Iteratoren) sind eine Möglichkeit, auf Elemente in einer Sammlung zuzugreifen. Das Iteratorobjekt beginnt mit dem Zugriff auf das erste Element der Sammlung und endet, nachdem auf alle Elemente zugegriffen wurde. Iteratoren können nicht rückwärts, sondern nur vorwärts iterieren.
Das am häufigsten verwendete Szenario für Iteratoren in Python ist die Schleifenanweisung for, die eine Sammlung mit einem Iterator kapselt und auf die Sammlungselemente zugreift, um die Schleife auszuführen.
Zum Beispiel:
for number in range(5):#range返回一个列表
print(number)
Nach dem Login kopieren
range() gibt eine Sammlung zurück, die die angegebenen Elemente enthält, und die for-Anweisung kapselt sie in einen Iterator für den Zugriff. Verwenden Sie iter(), um über Listen zu sprechen Die Sammlung wird in einen Iterator umgewandelt, zum Beispiel:
numbers=[1,2,3,4,5]
#t就是迭代器
t=iter(numbers)
#打印t对象,以便查看其类型
print(t)
Nach dem Login kopieren
Rückgabeergebnis:
<list_iterator object at 0x10e805748>
Nach dem Login kopieren
Im Vergleich zu gewöhnlichen Python-Objekten verfügen Iteratoren über eine weitere
-Methode kann ein Element zurückgeben, der Aufrufer (z. B. eine for-Anweisung) kann auf die Sammlungselemente zugreifen, indem er die Methode __next__()
kontinuierlich aufruft. __next__()
Zum Beispiel:
numbers=[1,2,3,4,5]
#t就是迭代器
t=iter(numbers)
#打印t对象,以便查看其类型
print(t.__next__())
print(t.__next__())
print(t.__next__())
print(t.__next__())
Nach dem Login kopieren
Rückgabeergebnis:
1
2
3
4
Nach dem Login kopieren
Der Aufrufer kann die
-Methode so lange aufrufen, bis die StopIteration-Ausnahme zurückgegeben wird. __next__()
2. Verwenden Sie yield
Iteratoren werden häufig in der Python-Programmierung verwendet. Wie können Entwickler ihre eigenen Iteratoren anpassen?
Die Antwort ist die Verwendung des Schlüsselworts yield.
Der Aufruf einer definierten Funktion, die das Schlüsselwort yield enthält, führt die Funktion nicht aus, sondern erhält einen der Funktion entsprechenden Iterator.
Instanz:
import time
def demoIternator():
print("---1---")
yield 1
print("---2---")
yield 2
print("---3---")
yield 3
print("---4---")
for x in demoIternator():
print(x)
time.sleep(1)
Nach dem Login kopieren
Bei jedem Aufruf der __next__()-Methode des Iterators wird die Iteratorfunktion ausgeführt und das Ergebnis von yield wird als Iterationsrückgabeelement zurückgegeben .
Das obige ist der detaillierte Inhalt vonEinführung in das Python-Schlüsselwort yield. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!