Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Учебное пособие по доходности в Python:генератор и пример доходности и возврата

Что такое доходность Python?

Ключевое слово yield в python работает как return с единственным

разница в том, что вместо возврата значения он возвращает вызывающей стороне объект генератора.

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

Из этого руководства по Python вы узнаете:

Синтаксис

00

Описание

Выход Python возвращает объект генератора. Генераторы – это специальные функции, которые нужно повторять, чтобы получить значения.

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

Пример:метод доходности

Вот простой пример доходности. Функция testyield() имеет ключевое слово yield со строкой «Добро пожаловать в Guru99 Python Tutorials». Когда функция вызывается, выходные данные выводятся, и вместо фактического значения выдается объект генератора.

10 

Вывод:

27

Полученный результат представляет собой объект генератора, который имеет значение, которое мы дали для выхода.

Но мы не получаем сообщение, которое мы должны передать для выхода!

Чтобы напечатать сообщение, переданное yield, необходимо выполнить итерацию объекта генератора, как показано в примере ниже:

31

Вывод

40

Что такое генераторы в Python?

Генераторы — это функции, которые возвращают итерируемый объект генератора. Значения из объекта-генератора извлекаются по одному, а не весь список вместе, и, следовательно, для получения фактических значений вы можете использовать цикл for, используя метод next() или list().

Использование функции генератора

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

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

Чтобы создать функцию-генератор, вам нужно будет добавить ключевое слово yield. В следующих примерах показано, как создать функцию-генератор.

58

Вывод:

60

Разница между нормальной функцией и функцией генератора.

Давайте разберемся, чем функция генератора отличается от обычной функции.

Есть 2 функции normal_test() и generate_test().

Обе функции должны возвращать строку «Hello World». normal_test() использует return, а генератор_test() использует yield.

72

Вывод:

89

Вывод показывает, что когда вы вызываете обычную функцию normal_test(), она возвращает строку Hello World. Для функции-генератора с ключевым словом yield она возвращает , а не строку.

В этом основное отличие функции генератора от обычной функции. Теперь, чтобы получить значение из объекта-генератора, нам нужно либо использовать объект внутри цикла for, либо использовать метод next(), либо использовать list().

99

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

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

Как прочитать значения из генератора?

Вы можете прочитать значения из объекта-генератора, используя список(), цикл for и метод next().

Использование:list()

Список — это итерируемый объект, элементы которого заключены в скобки. Использование list() для объекта-генератора даст все значения, которые содержит генератор.

107

Вывод:

114

Использование :for-in

В примере определена функция even_numbers(), которая выдаст вам все четные числа для заданного n. Вызов функции even_numbers() вернет объект-генератор, который используется внутри цикла for.

Пример:

129

Вывод:

133

Использование следующей()

Метод next() даст вам следующий элемент в списке, массиве или объекте. Когда список пуст, и если вызывается next(), он возвращает ошибку с сигналом stopIteration. Эта ошибка от next() указывает на то, что в списке больше нет элементов.

146

Вывод:

159

Генераторы одноразовые

В случае генераторов они доступны для использования только один раз. Если вы попытаетесь использовать их снова, он будет пуст.

Например:

165

Вывод:

178

Если вы хотите, чтобы выходные данные использовались снова, вам придется снова выполнить вызов функции.

Пример:генераторы и доходность для ряда Фибоначчи

В следующем примере показано, как использовать генераторы и yield в Python. В примере будет сгенерирован ряд Фибоначчи.

186

Вывод:

197

Пример:вызов функции с выходом

В этом примере увидим, как вызвать функцию с доходностью.

В приведенном ниже примере есть функция с именем test(), которая возвращает квадрат заданного числа. Существует еще одна функция, называемая getSquare(), которая использует test() с ключевым словом yield. Вывод дает квадратное значение для заданного диапазона чисел.

201

Вывод:

219

Когда использовать Yield вместо Return в Python

Доход Python3 ключевое слово возвращает генератор вызывающему объекту, и выполнение кода начинается только после итерации генератора.

возврат в функции — это конец выполнения функции, и вызывающей стороне возвращается одно значение.

Вот ситуация, когда вы должны использовать Yield вместо Return

  • Используйте yield вместо return, если размер данных большой
  • Выход – лучший выбор, если вам нужно ускорить выполнение операций с большими наборами данных.
  • Используйте yield, если вы хотите вернуть вызывающей функции большой набор значений
  • Доход – это эффективный способ получения больших или бесконечных данных.

Доходность и доходность

Вот разница между доходностью и доходностью

Доходность Возврат
Yield возвращает вызывающей стороне объект генератора, и выполнение кода начинается только после итерации генератора. Возврат в функции — это конец выполнения функции, и вызывающей стороне возвращается одно значение.
Когда функция вызывается и встречает ключевое слово yield, выполнение функции останавливается. Он возвращает объект генератора вызывающей стороне. Выполнение функции начнется только тогда, когда будет выполнен объект-генератор. При вызове функции начинается выполнение, и значение возвращается вызывающей стороне, если есть ключевое слово return. Возврат внутри функции отмечает конец выполнения функции.
выражение доходности выражение возврата
При использовании ключевого слова yield память не используется. Память выделяется для возвращаемого значения.
Очень полезно, если вам приходится иметь дело с огромным объемом данных, так как память не используется. Удобно для очень небольшого размера данных.
Производительность выше, если ключевое слово yield используется для больших объемов данных. Если размер данных огромен, используется много памяти, что снижает производительность.
Время выполнения быстрее в случае доходности для больших объемов данных. Используемое время выполнения больше, так как выполняется дополнительная обработка в случае, если размер ваших данных огромен, он будет работать нормально для небольшого размера данных.

Обзор:

  • Ключевое слово yield в python работает как return с той лишь разницей, что вместо возврата значения оно возвращает вызывающему объекту функцию-генератор.
  • Генератор – это особый тип итератора, который после использования больше не будет доступен. Значения не сохраняются в памяти и доступны только при вызове.
  • Значения из генератора можно считать с помощью методов for-in, list() и next().
  • Основное различие между yield и return заключается в том, что yield возвращает вызывающей функции функцию-генератор, а return возвращает вызывающей стороне одно значение.
  • Yield не хранит никаких значений в памяти, и его преимущество заключается в том, что это полезно, когда размер данных большой, так как ни одно из значений не сохраняется в памяти.
  • Производительность выше, если используется ключевое слово yield по сравнению с return для больших объемов данных.

Python

  1. Анонимная/лямбда-функция Python
  2. Генераторы Python
  3. Замыкания Python
  4. Декораторы Python
  5. Функция Python String strip() с ПРИМЕРОМ
  6. Длина строки Python | Пример метода len()
  7. Лямбда-функции Python с ПРИМЕРАМИ
  8. Функция Python round() с ПРИМЕРАМИ
  9. Функция Python map() с ПРИМЕРАМИ
  10. Счетчик Python в коллекциях с примером