Der folgende Editor zeigt Ihnen ein Beispiel für den Coroutine-Betrieb des Python-Generators. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf >
Wenn wir eine Funktion über yield in einen Generator umwandeln, wird beim direkten Ausführen der Funktion kein Ergebnis zurückgegeben. Da die Funktion zu diesem Zeitpunkt bereits ein Generator ist, müssen wir den Wert über next() abrufen und bei Yield wieder aus der Funktion springen.
Wir fügen die next()-Methode hinzu:
def put_on(name): print("Hi {}, 货物来了,准备搬到仓库!".format(name)) while True: goods = yield print("货物[%s]已经被%s搬进仓库了。"%(goods,name)) p = put_on("bigberg") #输出 G:\python\install\python.exe G:/python/untitled/study4/test/double.py Process finished with exit code 0
Zu diesem Zeitpunkt wird die Funktion unterbrochen Bei Waren = Wenn Yield auftritt und wir die Funktion next () erneut aufrufen, führt die Funktion nach der Unterbrechung nur den Inhalt aus, dh den Teil unter Yield im obigen Beispiel.
print(type(p)) #输出 <class 'generator'>
def put_on(name): print("Hi {}, 货物来了,准备搬到仓库!".format(name)) while True: goods = yield #遇到yield中断 print("货物[%s]已经被%s搬进仓库了。"%(goods,name)) #中断后运行部分 p = put_on("bigberg") p.__next__() #输出 Hi bigberg, 货物来了,准备搬到仓库!
Zusammenfassung:
def put_on(name): print("Hi {}, 货物来了,准备搬到仓库!".format(name)) while True: goods = yield print("货物[%s]已经被%s搬进仓库了。"%(goods,name)) p = put_on("bigberg") p.__next__() p.__next__() #输出 Hi bigberg, 货物来了,准备搬到仓库! 货物[None]已经被bigberg搬进仓库了。
2. Von send() übergebener Wert
Zusammenfassung:
__next__() ruft nur diese Ausbeute auf, was auch als Aufwecken der Ausbeute bezeichnet werden kann, den Wert jedoch nicht an die Ausbeute weitergibt.
Die Methode send() ruft yield auf und kann den Wert an yield übergeben
def put_on(name): print("Hi {}, 货物来了,准备搬到仓库!".format(name)) while True: goods = yield print("货物[%s]已经被%s搬进仓库了。"%(goods,name)) p = put_on("bigberg") p.__next__() p.send("瓜子") #输出 Hi bigberg, 货物来了,准备搬到仓库! 货物[瓜子]已经被bigberg搬进仓库了。
3. Einzelner Thread zur Erzielung eines parallelen Effekts (Coroutine)
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Coroutine-Betriebs des Python-Generators anhand von Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!