Saagikusavaldust kasutatakse Pythonis generaatorite määratlemiseks. Nii et enne kui hakkame uurima, mida täpselt saak annab, peame kõigepealt mõistma generaatorite kontseptsiooni. Generaatoritel on Pythonis oluline roll ja kui olete Pythoni programmeerimises sügavam, siis on tõenäoline, et olete Pythoni generaatoritega juba koostööd teinud. Generaatoreid kasutatakse iteraatorite loomiseks Pythonis, kuid erineva lähenemisviisiga.
Pythoni generaatorid on funktsioonid, mis annavad tulemuste jada ning mida saab peatada ja dünaamiliselt jätkata. Generaatorid lisati esmalt valikulise funktsioonina Python 2.2 ja muudeti standardiks Python 2.3-s. Kuigi generaatorite funktsioonid olid piisavalt võimsad, parandati neid Python 2.5-s märkimisväärselt.
Kui generaatorid lisati Python 2.2-sse tagasi, siis tõi see tagasiühilduvuse jaoks kasutusele uue märksõna “tootlus”, mille jaoks pidime generaatorid generaatorite importimiseks moodulist _future_ importima. Seda muudeti Pythoni versioonis 2.3, kui generaatorid said standardiks ja see polnud enam vajalik.
Saagikusavaldus peatab funktsiooni täitmise ja saadab väärtuse tagasi helistajale, samal ajal kui olekut salvestatakse ja hiljem jätkatakse, mis tähendab, et kogu generaatori enda tööd saab pärast tagastatava väärtuse saamist ikkagi jätkata. Tagastamisavaldus lõpetab funktsiooni täitmise ja saadab väärtuse helistajale tagasi. Ilma selleta ei anna teie funktsioon midagi tagasi. Vaatame lähemalt, millal kasutada saagikust ja millal kasutada Pythonis tootlust, et paremini mõista nende kahe erinevust.
Saagikusertifikaati kasutatakse Pythoni generaatorites funktsiooni tagastamise asendamiseks, et saata väärtus helistajale tagasi ilma kohalikke muutujaid hävitamata. Et paremini mõista, millist rolli tootlusavaldus Pythoni programmeerimisel mängib, peate mõistma, mis on generaatorid.
Generaatori funktsioone toodetakse määratluse järgi nagu tavalisi funktsioone, kuid need sisaldavad väljastust "saagis". See algab märksõnaga "saagikus", mis täpsustab helistajale tagastatava generaatoriobjekti. Generaator on Pythoni erifunktsioon, mis tagastab helistajale generaatoriobjekti, mitte andmeväärtuse. Saagise märksõnal on ainulaadne võime funktsiooni täitmist peatada, salvestada olekut ja hiljem jätkata.
Tagastamisteade väljub funktsioonist erinevalt tootluse teatisest, andes väärtuse helistajale tagasi. Funktsioonid tagastavad helistajatele väärtuse ja protseduurilisema iseloomuga asjad ei tagasta otseselt midagi. Kuigi funktsioonil võib olla mitu tagasitulekut, saab funktsiooni kutsumise korral kutsuda ainult ühe neist.
Tavaliselt ilmub tagastamisavaldus funktsiooniploki lõppu, et tagastada kõigi selles funktsioonis sisalduvate avalduste täitmise lõpptulemus. Siiski võib funktsiooniplokis ilmneda ka varem, et peatada kõigi selle ploki järgmiste avalduste täitmine. See jätkub kohe helistaja juures programmi täitmisega. Kui väärtust ei täpsustata, on Pythoni samaväärne tagastamisobjekti tüüp „Puudub”.
Süntaktiliselt on saagikus märksõna, mida saab kasutada samamoodi nagu tagasisõna, välja arvatud juhul, kui tagastamisavaldus lõpetab teie funktsiooni täitmise ja saadab helistajale tagasi väärtuse. Tagastamise avalduse funktsioon on sisendite kogumine ja helistajale midagi tagastada. Erinevalt tagastamisest kasutatakse tootlusavaldust generaatorite määratlemiseks, asendades funktsiooni tagastusväärtuse, et peatada selle täitmine, hoides kohalikud muutujad puutumata, samas kui tagastamisavaldus hävitab kõik kohalikud muutujad.