Yield-satsen avbryter en funktions exekvering och skickar ett värde tillbaka till den som ringer, men behåller tillräckligt tillstånd för att funktionen ska kunna återupptas där den slutade. När funktionen återupptas fortsätter den att köras direkt efter den senaste avkastningskörningen. Detta gör att dess kod kan producera en serie värden över tiden, snarare än att beräkna dem på en gång och skicka tillbaka dem som en lista.
Låt oss se med ett exempel:
Pytonorm
delsträng sträng java
# 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)> |
>
ordning efter slumpmässig sql
java avgränsare
>
Produktion:
1 2 3>
Lämna tillbaka skickar ett specificerat värde tillbaka till sin uppringare medan Avkastning kan producera en sekvens av värden. Vi bör använda avkastning när vi vill iterera över en sekvens, men vill inte lagra hela sekvensen i minnet. Yield används i Python generatorer . En generatorfunktion definieras precis som en normal funktion, men när den behöver generera ett värde, gör den det med nyckelordet avkastning snarare än retur. Om kroppen av en def innehåller avkastning, blir funktionen automatiskt en generatorfunktion.
Pytonorm
int parseint
# 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)> |
sträng jämför med java
>
>
Produktion:
1 4 9 16 25 36 49 64 81 100>