logo

Hvornår skal man bruge udbytte i stedet for afkast i Python?

Yield-erklæringen suspenderer en funktions udførelse og sender en værdi tilbage til den, der ringer, men bevarer tilstrækkelig tilstand til at aktivere funktionen til at genoptage, hvor den slap. Når funktionen genoptages, fortsætter den udførelse umiddelbart efter den sidste udbyttekørsel. Dette gør det muligt for dens kode at producere en række værdier over tid, i stedet for at beregne dem på én gang og sende dem tilbage som en liste.

Lad os se med et eksempel:



sammenlignelig streng

Python






# 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)>



>

>

Produktion:

1 2 3>

Vend tilbage sender en specificeret værdi tilbage til den, der ringer Udbytte kan producere en række værdier. Vi bør bruge udbytte, når vi vil iterere over en sekvens, men ikke ønsker at gemme hele sekvensen i hukommelsen. Yield bruges i Python generatorer . En generatorfunktion er defineret ligesom en normal funktion, men når den skal generere en værdi, gør den det med nøgleordet yield i stedet for return. Hvis kroppen af ​​en def indeholder udbytte, bliver funktionen automatisk til en generatorfunktion.

cassidy hutchinson uddannelse

Python




# 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)>

>

>

sammenligne metode java

Produktion:

1 4 9 16 25 36 49 64 81 100>