logo

Kdaj uporabiti yield namesto return v Pythonu?

Stavek yield prekine izvajanje funkcije in pošlje vrednost nazaj klicatelju, vendar ohrani dovolj stanja, da omogoči funkciji nadaljevanje, kjer je končala. Ko se funkcija nadaljuje, nadaljuje z izvajanjem takoj po zadnjem zagonu donosa. To omogoča njegovi kodi, da sčasoma proizvede vrsto vrednosti, namesto da jih izračuna naenkrat in jih pošlje nazaj kot seznam.

Poglejmo na primeru:



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



>

>

Izhod:

1 2 3>

Vrnitev pošlje določeno vrednost nazaj svojemu klicatelju, medtem ko donos lahko ustvari zaporedje vrednosti. Donos bi morali uporabiti, ko želimo ponoviti zaporedje, vendar ne želimo shraniti celotnega zaporedja v pomnilnik. Yield se uporablja v Pythonu generatorji . Generatorska funkcija je definirana tako kot običajna funkcija, vendar kadar koli mora ustvariti vrednost, to stori s ključno besedo yield in ne return. Če telo def vsebuje yield, funkcija samodejno postane generatorska funkcija.

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

listnode
>

>

Izhod:

1 4 9 16 25 36 49 64 81 100>