Share This
Связаться со мной
Крути в низ
Categories
//Сравнение операторов yield и return в Python (с примерами)

Сравнение операторов yield и return в Python (с примерами)

31.05.2021Category : Python

В этой статье мы расскажем про основные различия между yield и return в Python. А для лучшего понимания этих различий приведем пару примеров.

Встроенное ключевое слово yield используется для создания функций-генераторов. (Про генераторы и их отличия от функций и списков можно подробнее прочитать здесь).

Функция, содержащая yield, может генерировать сразу несколько результатов. Она приостанавливает выполнение программы, отправляет значение результата вызывающей стороне и возобновляет выполнение с последнего yield. Кроме того, функция, содержащая yield, отправляет сгенерированную серию результатов в виде объекта-генератора.

Return также является встроенным ключевым словом в Python. Он завершает функцию, а вызывающей стороне отправляет значение.

Разница между yield и return

Начнем с того, что между yield и return есть много заметных различий. Для начала давайте обсудим их.

return yield
Оператор return возвращает только одно значение. Оператор yield может возвращать серию результатов в виде объекта-генератора.
Return выходит из функции, а в случае цикла он закрывает цикл. Это последний оператор, который нужно разместить внутри функции. Не уничтожает локальные переменные функции. Выполнение программы приостанавливается, значение отправляется вызывающей стороне, после чего выполнение программы продолжается с последнего оператора yield.
Логически, функция должна иметь только один return. Внутри функции может быть более одного оператора yield.
Оператор return может выполняться только один раз. Оператор yield может выполняться несколько раз.
Return помещается внутри обычной функции Python. Оператор yield преобразует обычную функцию в функцию-генератор.

Пример 1

Теперь давайте рассмотрим разницу между операторами return и yield на примерах.

В приведенном ниже коде мы использовали несколько операторов возврата. Вы можете заметить, что выполнение программы прекратится уже после первого оператора return. Весь код, идущий после, не будет выполнен.

num1 =10 num2=20          def mathOP():     return num1+num2     return num1-num2     return num1*num2     return num1/num2  print(mathOP())

В выводе видно, что функция возвращает только первое значение, после чего программа завершается.

sravnenie operatorov yield i return v python s primerami 20651ce - Сравнение операторов yield и return в Python (с примерами)

Чтобы выполнить аналогичную задачу с несколькими операторами return, нам нужно создать четыре разные функции для каждого типа арифметической операции.

num1 =10 num2=20  def sumOP():     return num1+num2  def subtractOP():     return num1-num2  def multiplicationOP():     return num1*num2  def divisionOP():     return num1/num2  print("The sum value is: ",sumOP()) print("The difference value is: ",subtractOP()) print("The multiplication value is: ",multiplicationOP()) print("The division value is: ",divisionOP())

Запустив данный код, получим следующий результат:

sravnenie operatorov yield i return v python s primerami f99e89f - Сравнение операторов yield и return в Python (с примерами)

Однако мы можем выполнить эти арифметические операции внутри одной функции-генератора, используя несколько операторов yield.

num1 =10 num2=20     def mathOP():     yield num1+num2     yield num1-num2     yield num1*num2     yield num1/num2  print("Printing the values:") for i in mathOP():     print(i)

Получим результат:

sravnenie operatorov yield i return v python s primerami eba2081 - Сравнение операторов yield и return в Python (с примерами)

Пример 2

Давайте рассмотрим еще один пример использования операторов return и yield.

Создадим список чисел и передадим его в функцию mod() в качестве аргумента. Далее, внутри функции, мы проверяем каждый элемент списка. Если он делится без остатка на 10, то мы его выводим.

Для начала давайте реализуем этот пример в нашем скрипте Python с использованием оператора return.

myList=[10,20,25,30,35,40,50]  def mod(myList):     for i in myList:         if(i%10==0):             return i  print(mod(myList))

Оператор return возвращает только первое число, кратное 10, и завершает выполнение функции.

sravnenie operatorov yield i return v python s primerami d5f874d - Сравнение операторов yield и return в Python (с примерами)

Теперь давайте реализуем тот же пример, используя оператор yield.

myList=[10,20,25,30,35,40,50]  def mod(myList):     for i in myList:         if(i%10==0):             yield i  for i in mod(myList):     print(i)

Получим следующий результат:

sravnenie operatorov yield i return v python s primerami 67508a4 - Сравнение операторов yield и return в Python (с примерами)

Заключение

В этой статье мы провели сравнение yield и return в Python, перечислили все заметные различия между ними и разобрали это на примерах.

Давайте подытожим.

И return, и yield являются встроенными ключевыми словами (или операторами) Python. Оператор return используется для возврата значения из функции. При этом он прекращает выполнение программы. А оператор yield создает объект-генератор и может возвращать несколько значений, не прерывая выполнение программы.

sravnenie operatorov yield i return v python s primerami 7a52266 - Сравнение операторов yield и return в Python (с примерами)

Свежие вакансии по Python

Для тех, кто хочет найти работу Junior Python Developer

Подписаться ×

  • 14 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close