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.
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.
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”..
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.