logo

Коли використовувати yield замість return у Python?

Інструкція yield призупиняє виконання функції та надсилає значення назад абоненту, але зберігає достатній стан, щоб функція могла продовжити роботу з того місця, де вона зупинилася. Коли функція відновлює роботу, вона продовжує виконання одразу після останнього запуску yield. Це дозволяє його коду виробляти ряд значень з часом, а не обчислювати їх одразу та надсилати назад як список.

Розглянемо на прикладі:



Python






# 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)>



100 км/год до миль/год

>

>

дійсні ідентифікатори java

Вихід:

1 2 3>

Повернення надсилає вказане значення назад абоненту, тоді як Врожайність може створити послідовність значень. Нам слід використовувати yield, коли ми хочемо перебирати послідовність, але не хочемо зберігати всю послідовність у пам’яті. Yield використовується в Python генератори . Функція-генератор визначається так само, як і звичайна функція, але коли їй потрібно згенерувати значення, вона робить це за допомогою ключового слова yield, а не return. Якщо тіло def містить yield, функція автоматично стає функцією генератора.

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)>

>

наскільки великий екран мого монітора

>

Вихід:

1 4 9 16 25 36 49 64 81 100>