Разлика между Python Yield и Python Return

Декларацията за добив се използва за определяне на генераторите в Python. Така че преди да разберем какво точно добива, първо трябва да разберем концепцията на генераторите. Генераторите имат важна роля в Python и ако сте задълбочени в програмирането на Python, има вероятност вече да сте работили с Python генераторите. Генераторите се използват за създаване на итератори в Python, но с различен подход.

Генераторите на Python са функции, които произвеждат последователност от резултати и могат да бъдат паузирани и възобновени динамично. Първо генераторите бяха добавени като опция в Python 2.2 и бяха направени стандартни в Python 2.3. Въпреки че бяха достатъчно мощни, функциите на генераторите бяха значително подобрени в Python 2.5.

Когато генераторите бяха добавени обратно в Python 2.2, той въведе нова ключова дума „доходност“ за обратна съвместимост, за която трябваше да импортираме генератори от модула _future_, за да ги използваме. Това беше променено във версията на Python 2.3, когато генераторите станаха стандартни и вече не беше необходимо.

Декларацията за производителност спира изпълнението на функция и изпраща стойност обратно на обаждащия се, като същевременно запазва състоянието и по-късно възобновява, което означава, че самият генератор все още може да бъде възобновен след получаване на връщащата стойност. Декларация за връщане завършва изпълнението на функцията и изпраща стойност обратно на обаждащия се. Без него вашата функция не връща нищо. Нека да разгледаме добре кога да използваме добива и кога да използваме return в Python, за да разберем по-добре разликата между двете.

Какво е Python Yield?

Декларацията за добив се използва в генераторите на Python, за да замени връщането на функция за изпращане на стойност обратно към нейния повикващ, без да се унищожават локални променливи. За да разберете по-добре каква роля играе декларацията за доходност в програмирането на Python, трябва да разберете какви са генераторите.

Функциите на генератора се произвеждат по дефиниция точно като обикновените функции, но съдържат оператор „добив“. Това започва с ключовата дума „добив“, която определя обекта на генератора, който трябва да бъде върнат на обаждащия се. Генераторът е специална функция в Python, която връща генериращ обект на повикващия, а не стойност на данните. Ключовата дума за добив има уникалната възможност да спре изпълнението на функцията, да запази състоянието и по-късно да се възобнови.

Какво е Python Return?

Декларацията за връщане, за разлика от декларацията за доходност, излиза от функция и връща стойност на своя обаждащ се. Функциите връщат стойност обратно на своите обаждащи се, а тези, които имат по-процедурен характер, изрично не връщат нищо. Докато една функция може да има множество оператори за връщане, само един от тях може да бъде извикан за всяко дадено извикване на функцията.

Обикновено оператор за връщане се появява в самия край на функционален блок, за да върне крайния резултат от изпълнение на всички оператори, съдържащи се в тази функция. Въпреки това може също да се появи по-рано във функционалния блок, за да спре изпълнението на всички следващи оператори в този блок. Това незабавно възобновява изпълнението на програмата при обаждащия се. Когато не е посочена стойност, еквивалентният тип връщащ обект в Python е „None“.

Разлика между Python Yield и Return

  1. Основи, свързани с Python Yield и Return

    • Декларацията за добив се използва в генераторите на Python, за да замени връщането на функция за изпращане на стойност обратно към нейния повикващ, без да се унищожават локални променливи. Генераторът е специална функция в Python, която връща генериращ обект на повикващия, а не стойност на данните.
    • Декларацията за връщане, за разлика от декларацията за доходност, излиза от функция и връща стойност на своя обаждащ се. Обикновено оператор за връщане се появява в самия край на функционален блок, за да върне крайния резултат от изпълнение на всички оператори, съдържащи се в тази функция. Всички функции връщат стойност и ако няма определена стойност, тя ще върне „None“.
  1. Генератори срещу функции в Python Yield и Return

    • Декларацията за добив се използва изрично с генератори на Python. Синтактично генераторът е функция с декларация за добив. Докато една функция може да има множество оператори за връщане, само един от тях може да бъде извикан за всяко дадено извикване на функцията.
    • За разлика от функция, която се връща само веднъж, генераторите могат да спрат изпълнението и да дадат междинни резултати. Всеки генератор е дефиниран като функция, но вместо ключова дума за връщане, ключовата дума за добив се използва във функционалния блок, за да покаже, че връщащата стойност е само временна и целият генератор може да бъде възобновен дори след получаване на връщащата стойност.
  1. Изпълнение на Python Yield и Return

    • Декларацията за връщане прекратява изпълнението на функция и изпраща обратно стойност на своя повикващ. Функциите връщат стойност обратно на своите обаждащи се, а тези, които имат по-процедурен характер, изрично не връщат нищо. Това, което всъщност е, е да вземете изход от функция и да унищожите всички локални стойности вътре.
    • Отчетът за добив, от друга страна, замества връщащата се стойност на функция, за да спре изпълнението й и изпраща стойност обратно на своя повикващ, без да унищожава локални променливи. Въпреки това, за разлика от функцията за връщане, добивът възобновява изпълнението на функцията от мястото, където е спрян.

Добив на Python vs. Return: Сравнителна диаграма

Обобщение на дохода и възвръщаемостта на Python

Синтактично добивът е ключова дума, която може да се използва точно като ключовата дума за връщане, с изключение на изявлението за връщане прекратява изпълнението на вашата функция и изпраща обратно стойност на своя викащ. Функционалността на декларацията за връщане е да приема входове и да връща нещо на обаждащия се. За разлика от връщането, операторът на доходност изрично се използва за дефиниране на генератори, заменя връщащата стойност на функция, за да спре нейното изпълнение, като запазва локалните променливи непокътнати, докато операторът за връщане унищожава всички локални променливи в.