Når skal man bruke yield i stedet for avkastning i Python?

Yield-erklæringen suspenderer en funksjons utførelse og sender en verdi tilbake til den som ringer, men beholder nok tilstand til at funksjonen kan fortsette der den slapp. Når funksjonen gjenopptas, fortsetter den kjøringen umiddelbart etter siste avkastningskjøring. Dette lar koden produsere en serie verdier over tid, i stedet for å beregne dem på en gang og sende dem tilbake som en liste.

La oss se med et eksempel:

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

Produksjon:

1 2 3 

Komme tilbake sender en spesifisert verdi tilbake til den som ringer mens Utbytte kan produsere en rekke verdier. Vi bør bruke yield når vi vil iterere over en sekvens, men ikke vil lagre hele sekvensen i minnet. Yield brukes i Python generatorer . En generatorfunksjon er definert akkurat som en vanlig funksjon, men når den trenger å generere en verdi, gjør den det med nøkkelordet yield i stedet for retur. Hvis kroppen til en def inneholder yield, blir funksjonen automatisk en generatorfunksjon.

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

Produksjon:

1 4 9 16 25 36 49 64 81 100