Príkaz výnosu pozastaví vykonávanie funkcie a odošle hodnotu späť volajúcemu, ale zachová dostatočný stav na to, aby funkcia mohla pokračovať tam, kde prestala. Keď sa funkcia obnoví, pokračuje vo vykonávaní ihneď po poslednom spustení výnosu. To umožňuje jeho kódu vytvárať sériu hodnôt v priebehu času, namiesto toho, aby ich vypočítal naraz a poslal späť ako zoznam.
Pozrime sa na príklad:
Python
reťazec a podreťazec
# 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)> |
>
>
Výkon:
1 2 3>
Návrat odošle určenú hodnotu späť svojmu volajúcemu, zatiaľ čo Výťažok môže vytvoriť postupnosť hodnôt. Výťažok by sme mali použiť, keď chceme opakovať sekvenciu, ale nechceme uložiť celú sekvenciu do pamäte. Výnos sa používa v Pythone generátory . Funkcia generátora je definovaná rovnako ako normálna funkcia, ale vždy, keď potrebuje vygenerovať hodnotu, urobí tak pomocou kľúčového slova výnos namiesto návratu. Ak telo def obsahuje výnos, funkcia sa automaticky stane funkciou generátora.
viacriadkový komentár powershell
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>>100>:> >break> >print>(num)> |
>
>
Výkon:
1 4 9 16 25 36 49 64 81 100>