L'éditeur suivant vous apportera un exemple de fonctionnement de la coroutine du générateur Python. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un œil.
1. Méthode d'opération de rendement
Nous définissons un générateur comme suit :
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
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, 货物来了,准备搬到仓库!
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搬进仓库了。
Résumé :
Convertissez la fonction en générateur via le rendement, vous devez utiliser la méthode next() pour exécuter yield Conservez simplement l'état d'interruption de la fonction. Appeler à nouveau next() exécutera la partie après le rendement Si le rendement ne renvoie pas de valeur, il renverra une valeur Aucun2. Valeur transmise par send()
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搬进仓库了。
Résumé :
__next__() appelle simplement ce rendement, ce qui peut également être considéré comme réveillant le rendement, mais il ne transmet pas la valeur au rendement. La méthode send() appelle rendement et peut transmettre la valeur à rendementVous devez utiliser __next__() avant d'utiliser la fonction send(), car elle doit d'abord être interrompue. est appelé pour la deuxième fois, ce n'est qu'alors que la valeur peut être transmise.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("瓜子") p.send("花生") p.send("饼干") p.send("牛奶") #多次调用send() Hi bigberg, 货物来了,准备搬到仓库! 货物[瓜子]已经被bigberg搬进仓库了。 货物[花生]已经被bigberg搬进仓库了。 货物[饼干]已经被bigberg搬进仓库了。 货物[牛奶]已经被bigberg搬进仓库了。
3. Fil unique pour obtenir un effet parallèle (coroutine)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!