L'istruzione yield sospende l'esecuzione di una funzione e invia un valore al chiamante, ma conserva uno stato sufficiente per consentire alla funzione di riprendere da dove era stata interrotta. Quando la funzione riprende, continua l'esecuzione immediatamente dopo l'ultima esecuzione di rendimento. Ciò consente al suo codice di produrre una serie di valori nel tempo, anziché calcolarli contemporaneamente e inviarli indietro come un elenco.
Vediamo con un esempio:
Pitone
struttura dati
# 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)> |
>
>
Produzione:
1 2 3>
Ritorno invia un valore specificato al chiamante mentre Prodotto può produrre una sequenza di valori. Dovremmo usare yield quando vogliamo scorrere una sequenza, ma non vogliamo archiviare l'intera sequenza in memoria. Yield è usato in Python generatori . Una funzione generatrice è definita proprio come una normale funzione, ma ogni volta che deve generare un valore, lo fa con la parola chiave yield anziché con return. Se il corpo di una def contiene yield, la funzione diventa automaticamente una funzione generatrice.
Pitone
programma c per array bidimensionali
mini barra degli strumenti Excel
# 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)> |
>
>
Produzione:
1 4 9 16 25 36 49 64 81 100>