logo

Kad Python izmantot atdevi, nevis atdevi?

Ienesīguma paziņojums aptur funkcijas izpildi un nosūta vērtību atpakaļ zvanītājam, taču saglabā pietiekami daudz stāvokļa, lai funkcija varētu atsākt no vietas, kur tā tika pārtraukta. Kad funkcija tiek atsākta, tā turpina izpildi tūlīt pēc pēdējās ienesīguma darbības. Tas ļauj tā kodam laika gaitā radīt virkni vērtību, nevis tās aprēķināt uzreiz un nosūtīt atpakaļ kā sarakstu.

Linux make komanda

Apskatīsim ar piemēru:

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

>

>

Izvade:

1 2 3>

Atgriezties nosūta noteiktu vērtību atpakaļ zvanītājam, turpretim Ienesīgums var radīt vērtību secību. Mums vajadzētu izmantot ienesīgumu, ja mēs vēlamies atkārtot secību, bet nevēlamies saglabāt visu secību atmiņā. Ienesīgums tiek izmantots Python ģeneratori . Ģeneratora funkcija tiek definēta tāpat kā parastā funkcija, taču ikreiz, kad tai ir jāģenerē vērtība, tā to dara ar ienesīguma atslēgvārdu, nevis atdevi. Ja def pamattekstā ir ienesīgums, funkcija automātiski kļūst par ģeneratora funkciju.

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>>>:> >break> >print>(num)>

>

>

Izvade:

1 4 9 16 25 36 49 64 81 100>