Starpība starp Python ražu un Python atgriešanos

Ražas deklarācija tiek izmantota, lai noteiktu ģeneratorus Python. Tātad, pirms mēs iedziļināmies tajā, ko tieši dod raža, mums vispirms ir jāsaprot ģeneratoru jēdziens. Ģeneratoriem ir nozīmīga loma Python un, ja jūs dziļi iedziļināties Python programmēšanā, iespējams, ka esat jau strādājis ar Python ģeneratoriem. Ģeneratorus izmanto, lai izveidotu iteratorus Python, bet ar atšķirīgu pieeju.

Python ģeneratori ir funkcijas, kas rada rezultātu secību un kuras var apturēt un dinamiski atsākt. Ģeneratori vispirms tika pievienoti kā izvēles līdzeklis Python 2.2 un tika izgatavoti par standarta Python 2.3. Lai arī tie bija pietiekami jaudīgi, Python 2.5 tika ievērojami uzlabotas ģeneratoru funkcijas.

Kad ģeneratori tika pievienoti atpakaļ Python 2.2, tas ieviesa jaunu atslēgvārdu “ienesīgums” atpakaļejošajai saderībai, kuram mums bija jāimportē ģeneratori no moduļa _future_, lai tos izmantotu. Tas tika mainīts Python versijā 2.3, kad ģeneratori kļuva par standartu, un tas vairs nebija nepieciešams.

Ienesīguma deklarācija aptur funkcijas izpildi un nosūta vērtību atpakaļ zvanītājam, vienlaikus saglabājot stāvokli un vēlāk atsākot, ar to saprotot, ka pēc atgriešanās vērtības iegūšanas visu ģeneratoru joprojām var atsākt. Atgriešanās paziņojums izbeidz funkcijas izpildi un nosūta vērtību zvanītājam. Bez tā jūsu funkcija neko neatdod. Labāk apskatīsim, kad izmantot ražu un kad atgriešanos lietot Python, lai labāk saprastu atšķirību starp abiem.

Kas ir Python Yield?

Ienesīguma deklarāciju Python ģeneratoros izmanto, lai aizstātu funkcijas atgriešanu, lai nosūtītu vērtību atpakaļ zvanītājam, neiznīcinot vietējos mainīgos. Lai labāk saprastu, kāda loma ienesīguma paziņojumam ir Python programmēšanā, jums ir jāsaprot, kas ir ģeneratori.

Ģeneratoru funkcijas pēc definīcijas tiek ražotas tāpat kā parastās funkcijas, taču tajās ir paziņojums par ienesīgumu. Tas sākas ar atslēgvārdu “raža”, kas norāda ģeneratora objektu, kas jāatdod zvanītājam. Ģenerators ir īpaša funkcija Python, kas zvanītājam atdod ģeneratora objektu, nevis datu vērtību. Ražošanas atslēgvārdam ir unikāla iespēja apturēt funkcijas izpildi, saglabāt stāvokli un vēlāk atsākt darbību.

Kas ir Python Return?

Atgriešanās paziņojums, atšķirībā no ienesīguma paziņojuma, iziet no funkcijas, nododot vērtību tā zvanītājam. Funkcijas atdod vērtību atpakaļ zvanītājiem, un tie, kas pēc būtības ir procesuālāki, neko tieši neatdod. Lai gan funkcijai var būt vairāki atgriešanās paziņojumi, uz jebkuru konkrētu funkcijas piesaukšanu var izsaukt tikai vienu no tām.

Parasti atgriešanās paziņojums tiek parādīts funkciju bloka pašā galā, lai atgrieztu gala rezultātu, izpildot visus paziņojumus, kas ietverti šajā funkcijā. Tomēr funkciju blokā var parādīties arī agrāk, lai apturētu visu nākamo šajā blokā esošo paziņojumu izpildi. Tas nekavējoties atsāk programmas izpildīšanu pie zvanītāja. Ja vērtība nav norādīta, Python ekvivalentais atgriešanās objekta tips ir “Nav”..

Starpība starp Python ražu un atgriešanos

  1. Ar Python Yield and Return saistītie pamati

    • Ienesīguma deklarāciju Python ģeneratoros izmanto, lai aizstātu funkcijas atgriešanu, lai nosūtītu vērtību atpakaļ zvanītājam, neiznīcinot vietējos mainīgos. Ģenerators ir īpaša funkcija Python, kas zvanītājam atdod ģeneratora objektu, nevis datu vērtību.
    • Atgriešanās paziņojums, atšķirībā no ienesīguma paziņojuma, iziet no funkcijas, nododot vērtību tā zvanītājam. Parasti atgriešanās paziņojums tiek parādīts funkciju bloka pašā galā, lai atgrieztu gala rezultātu, izpildot visus paziņojumus, kas ietverti šajā funkcijā. Visas funkcijas atgriež vērtību, un, ja nav norādīta kāda vērtība, tā atgriezīs vērtību “Nav”..
  1. Ģeneratori salīdzinājumā ar Python ražas un atgriešanās funkcijām

    • Ienesīguma deklarācija tiek tieši izmantota ar Python ģeneratoriem. Sintaktiski ģenerators ir funkcija ar ienesīguma deklarāciju. Lai gan funkcijai var būt vairāki atgriešanās paziņojumi, uz jebkuru konkrētu funkcijas piesaukšanu var izsaukt tikai vienu no tām.
    • Atšķirībā no funkcijas, kas atgriežas tikai vienu reizi, ģeneratori var apturēt izpildi un dot starpposma rezultātus. Katrs ģenerators tiek definēts kā funkcija, bet atgriešanās atslēgvārda vietā funkciju blokā tiek izmantots ienesīguma atslēgvārds, lai norādītu, ka atgriešanās vērtība ir tikai īslaicīga un visu ģeneratoru var atsākt pat pēc atgriešanās vērtības iegūšanas..
  1. Python ražas un atgriešanās izpilde

    • Atgriešanas paziņojums izbeidz funkcijas izpildi un nosūta atpakaļ vērtību tā zvanītājam. Funkcijas atdod vērtību atpakaļ zvanītājiem, un tie, kas pēc būtības ir procesuālāki, neko tieši neatdod. Tas, kas principā notiek, ir aiziet no funkcijas un iznīcināt visas vietējās vērtības.
    • No otras puses, ienesīguma paziņojums aizvieto funkcijas atgriešanas vērtību, lai apturētu tās izpildi, un nosūta vērtību atpakaļ zvanītājam, neiznīcinot vietējos mainīgos. Tomēr atšķirībā no atgriešanas funkcijas ienesīgums atjauno funkcijas izpildi no vietas, kur tā tika pārtraukta.

Python Yield vs Return: salīdzināšanas diagramma

Kopsavilkums par Python ražu un atgriešanos

Sintaktiski ienesīgums ir atslēgvārds, kuru var izmantot tāpat kā atgriešanās atslēgvārdu, izņemot to, ka atgriešanās paziņojums izbeidz jūsu funkcijas izpildi un nosūta atpakaļ vērtību tā zvanītājam. Atgriešanās paziņojuma funkcionalitāte ir veikt ieguldījumus un kaut ko atgriezt zvanītājam. Atšķirībā no atgriešanās, ienesīguma deklarācija tiek tieši izmantota, lai definētu ģeneratorus, aizstājot funkcijas atgriešanās vērtību, lai apturētu tās izpildi, saglabājot neskartus vietējos mainīgos, savukārt atgriešanās paziņojums iznīcina visus vietējos mainīgos.