Оператор yield используется для определения генераторов в Python. Поэтому, прежде чем мы начнем понимать, что именно дает доходность, мы должны сначала понять концепцию генераторов. Генераторы играют важную роль в Python, и если вы глубоко в программировании на Python, скорее всего, вы уже работали с генераторами Python. Генераторы используются для создания итераторов в Python, но с другим подходом.
Генераторы Python - это функции, которые производят последовательность результатов и могут быть приостановлены и возобновлены динамически. Генераторы были впервые добавлены в качестве дополнительной функции в Python 2.2 и сделаны стандартными в Python 2.3. Хотя они были достаточно мощными, функции генераторов были значительно улучшены в Python 2.5.
Когда генераторы были добавлены обратно в Python 2.2, было введено новое ключевое слово «yield» для обратной совместимости, для которого нам нужно было импортировать генераторы из модуля _future_, чтобы использовать их. Это было изменено в Python версии 2.3, когда генераторы стали стандартными, и в этом больше не было необходимости.
Оператор yield приостанавливает выполнение функции и отправляет значение обратно вызывающей стороне, сохраняя состояние и позднее возобновляя его, что означает, что весь генератор может быть возобновлен после получения возвращаемого значения. Оператор return завершает выполнение функции и отправляет значение обратно вызывающей стороне. Без этого ваша функция ничего не возвращает. Давайте внимательно рассмотрим, когда использовать yield и когда использовать return в Python, чтобы лучше понять разницу между этими двумя.
Оператор yield используется в генераторах Python для замены возврата функции, чтобы отправить значение обратно вызывающей стороне без разрушения локальных переменных. Чтобы лучше понять, какую роль играет оператор yield в программировании на Python, вы должны понять, что такое генераторы.
Функции генератора создаются по определению, как и обычные функции, но содержат оператор «yield». Это начинается с ключевого слова «yield», которое указывает объект генератора, который будет возвращен вызывающей стороне. Генератор - это специальная функция в Python, которая возвращает объект-генератор вызывающей стороне, а не значение данных. Ключевое слово yield обладает уникальной возможностью остановки выполнения функции, сохранения состояния и последующего возобновления..
Оператор return, в отличие от оператора yield, выходит из функции, возвращая значение вызывающей стороне. Функции возвращают значение своим вызывающим, а те, которые имеют более процедурный характер, явно не возвращают ничего вообще. Хотя функция может иметь несколько операторов возврата, только один из них может быть вызван для любого данного вызова функции.
Как правило, оператор возврата появляется в самом конце функционального блока, чтобы вернуть окончательный результат выполнения всех операторов, содержащихся в этой функции. Тем не менее, он также может появляться раньше в функциональном блоке, чтобы остановить выполнение всех последующих операторов в этом блоке. Это немедленно возобновляет выполнение программы у вызывающей стороны. Если значение не указано, эквивалентный тип возвращаемого объекта в Python - «Нет»..
Синтаксически yield - это ключевое слово, которое можно использовать точно так же, как ключевое слово return, за исключением того, что оператор return завершает выполнение вашей функции и возвращает значение вызывающей стороне. Функциональность оператора return состоит в том, чтобы принимать входные данные и возвращать что-то вызывающей стороне. В отличие от возврата, оператор yield явно используется для определения генераторов, заменяя возвращаемое значение функции, чтобы приостановить ее выполнение, сохраняя локальные переменные нетронутыми, тогда как оператор return уничтожает все локальные переменные внутри.