Příkaz výnosu pozastaví provádění funkce a odešle hodnotu zpět volajícímu, ale zachová dostatek stavu, aby umožnil funkci pokračovat tam, kde přestala. Když se funkce obnoví, pokračuje v provádění ihned po posledním běhu výnosu. To umožňuje jeho kódu vytvářet řadu hodnot v průběhu času, spíše než je počítat najednou a posílat je zpět jako seznam.
Podívejme se na příklad:
Krajta
metoda tostring
# 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)> |
>
jaké měsíce jsou ve 3. čtvrtletí
kali linuxový terminál
>
Výstup:
1 2 3>
Vrátit se odešle zadanou hodnotu zpět svému volajícímu, zatímco Výtěžek může vytvářet posloupnost hodnot. Výtěžek bychom měli použít, když chceme iterovat sekvenci, ale nechceme celou sekvenci ukládat do paměti. V Pythonu se používá výnos generátory . Funkce generátoru je definována stejně jako normální funkce, ale kdykoli potřebuje vygenerovat hodnotu, udělá to pomocí klíčového slova výnos, nikoli návrat. Pokud tělo def obsahuje výnos, funkce se automaticky stane funkcí generátoru.
Krajta
řetězec k itn
# 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)> |
r v jazyce c
>
>
Výstup:
1 4 9 16 25 36 49 64 81 100>