La declaración de rendimiento suspende la ejecución de una función y envía un valor de vuelta a la persona que llama, pero conserva suficiente estado para permitir que la función se reanude donde se quedó. Cuando la función se reanuda, continúa su ejecución inmediatamente después de la última ejecución de rendimiento. Esto permite que su código produzca una serie de valores a lo largo del tiempo, en lugar de calcularlos de una vez y enviarlos de regreso como una lista.
Veamos con un ejemplo:
Pitón
# A Simple Python program to demonstrate working> # of yield> # A generator function that yields 1 for the first time,> # 2 second time and 3 third time> def> simpleGeneratorFun():> >yield> 1> >yield> 2> >yield> 3> # Driver code to check above generator function> for> value>in> simpleGeneratorFun():> >print>(value)> |
>
>
Producción:
1 2 3>
Devolver envía un valor especificado de vuelta a su llamador, mientras que Producir puede producir una secuencia de valores. Deberíamos usar rendimiento cuando queremos iterar sobre una secuencia, pero no queremos almacenar la secuencia completa en la memoria. El rendimiento se utiliza en Python generadores . Una función generadora se define como una función normal, pero siempre que necesita generar un valor, lo hace con la palabra clave rendimiento en lugar de devolver. Si el cuerpo de una def contiene rendimiento, la función se convierte automáticamente en una función generadora.
Pitón
colecciones java java
# A Python program to generate squares from 1> # to 100 using yield and therefore generator> # An infinite generator function that prints> # next square number. It starts with 1> def> nextSquare():> >i>=> 1> ># An Infinite loop to generate squares> >while> True>:> >yield> i>*>i> >i>+>=> 1> # Next execution resumes> ># from this point> # Driver code to test above generator> # function> for> num>in> nextSquare():> >if> num>>100>:> >break> >print>(num)> |
>
>
Producción:
1 4 9 16 25 36 49 64 81 100>