Výnos sa používa na definovanie generátorov v Pythone. Takže skôr, ako sa dostaneme k tomu, čo presne prináša výnos, musíme najprv pochopiť pojem generátory. Generátory majú v Pythone významnú úlohu a ak ste hlboko v programovaní Pythonu, je pravdepodobné, že ste už spolupracovali s generátormi Pythonu. Generátory sa používajú na vytváranie iterátorov v Pythone, ale s iným prístupom.
Generátory Pythonu sú funkcie, ktoré vytvárajú postupnosť výsledkov a môžu byť dynamicky pozastavené a obnovené. Generátory boli prvýkrát pridané ako voliteľná funkcia v Pythone 2.2 a štandardné boli v Pythone 2.3. Aj keď boli dostatočne silné, funkcie generátorov boli v Pythone 2.5 výrazne vylepšené.
Keď boli generátory pridané späť do Pythonu 2.2, zaviedlo nové kľúčové slovo „výnos“ pre spätnú kompatibilitu, pre ktoré bolo potrebné importovať generátory z modulu _future_, aby sme ich mohli použiť. Toto sa zmenilo v Python verzie 2.3, keď sa generátory stali štandardmi a už to nebolo potrebné.
Výnosový výnos preruší vykonávanie funkcie a pošle hodnotu späť volajúcemu, pričom sa zachová stav a neskôr sa obnoví, čo znamená, že po získaní návratovej hodnoty sa môže stále obnoviť celý generátor. Príkaz na vrátenie ukončí vykonanie funkcie a pošle volajúcemu späť hodnotu. Bez neho vaša funkcia nevráti nič. Pozrime sa dobre, kedy použiť výnos a kedy použiť návrat v Pythone, aby sme lepšie porozumeli rozdielu medzi nimi.
Výťažok sa používa v generátoroch Pythonu ako náhrada za návrat funkcie na odoslanie hodnoty späť jej volajúcemu bez zničenia miestnych premenných. Aby ste lepšie pochopili, akú úlohu hrá vyhlásenie o výnose v programovaní v Pythone, musíte pochopiť, čo sú generátory.
Funkcie generátora sa vyrábajú podľa definície rovnako ako bežné funkcie, ale obsahujú vyhlásenie „výnos“. Začína sa to kľúčovým slovom „výnos“, ktoré určuje objekt generátora, ktorý sa má vrátiť volajúcemu. Generátor je špeciálna funkcia v Pythone, ktorá vracia volajúci objekt volajúcemu namiesto dátovej hodnoty. Kľúčové slovo výnos má jedinečnú schopnosť zastaviť vykonávanie funkcie, uložiť stav a neskôr obnoviť.
Príkaz na vrátenie, na rozdiel od príkazu na výnos, opúšťa funkciu a odovzdáva hodnotu volajúcemu. Funkcie vracajú späť hodnotu volajúcim a tie, ktoré majú skôr procedurálny charakter, sa výslovne vôbec nevracajú. Zatiaľ čo funkcia môže mať viac príkazov na vrátenie, pre každé dané vyvolanie funkcie môže byť volaná iba jedna z nich.
Príkaz return sa zvyčajne objaví na samom konci funkčného bloku, aby vrátil konečný výsledok vykonania všetkých príkazov obsiahnutých v tejto funkcii. Vo funkčnom bloku sa však môže objaviť aj skôr, aby sa zastavilo vykonávanie všetkých nasledujúcich príkazov v tomto bloku. Tým sa okamžite obnoví vykonávanie programu u volajúceho. Ak nie je zadaná žiadna hodnota, ekvivalentným typom návratového objektu v Pythone je „Žiadne“.
Syntakticky je výnos kľúčové slovo, ktoré sa dá použiť rovnako ako návratové kľúčové slovo, s výnimkou príkazu return, ktorý ukončí vykonávanie vašej funkcie a odošle späť volajúcemu hodnotu. Funkciou príkazu na návrat je prijať vstupy a niečo vrátiť volajúcemu. Na rozdiel od návratu sa výnosový príkaz výslovne používa na definovanie generátorov, pričom náhradou návratovej hodnoty funkcie sa pozastaví jej vykonávanie, pričom lokálne premenné zostanú nedotknuté, zatiaľ čo návratový príkaz zničí všetky miestne premenné v rámci.