Return et Yield dans les générateurs Python
Dans Python antérieur à la version 3.3, l'utilisation simultanée des instructions return et rendement dans une définition de fonction de générateur serait entraîner une erreur. Cependant, ce comportement a changé dans Python 3.3.
Considérez le code suivant :
<code class="python">def f(): return 3 yield 2</code>
L'appel de x = f() créera un générateur et x.__next__() déclenchera un Exception StopItération. Ce comportement diffère du simple retour 3, qui aurait renvoyé la valeur 3.
En effet, dans Python 3.3, return
De plus, le rendement de permet de déléguer les générateurs à d'autres générateurs. Considérons l'exemple suivant :
<code class="python">def f(): return 1 yield 2 def g(): x = yield from f() print(x) for _ in g(): pass</code>
Ce code imprime 1. g délègue l'exécution à f, et la valeur renvoyée par f (c'est-à-dire 1) est affectée à x. Cependant, l'instruction rendement 2 dans f n'est pas exécutée puisque l'exécution a été déléguée à g.
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!