Декларацията за добив се използва за определяне на генераторите в 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, за да замени връщането на функция за изпращане на стойност обратно към нейния повикващ, без да се унищожават локални променливи. За да разберете по-добре каква роля играе декларацията за доходност в програмирането на Python, трябва да разберете какви са генераторите.
Функциите на генератора се произвеждат по дефиниция точно като обикновените функции, но съдържат оператор „добив“. Това започва с ключовата дума „добив“, която определя обекта на генератора, който трябва да бъде върнат на обаждащия се. Генераторът е специална функция в Python, която връща генериращ обект на повикващия, а не стойност на данните. Ключовата дума за добив има уникалната възможност да спре изпълнението на функцията, да запази състоянието и по-късно да се възобнови.
Декларацията за връщане, за разлика от декларацията за доходност, излиза от функция и връща стойност на своя обаждащ се. Функциите връщат стойност обратно на своите обаждащи се, а тези, които имат по-процедурен характер, изрично не връщат нищо. Докато една функция може да има множество оператори за връщане, само един от тях може да бъде извикан за всяко дадено извикване на функцията.
Обикновено оператор за връщане се появява в самия край на функционален блок, за да върне крайния резултат от изпълнение на всички оператори, съдържащи се в тази функция. Въпреки това може също да се появи по-рано във функционалния блок, за да спре изпълнението на всички следващи оператори в този блок. Това незабавно възобновява изпълнението на програмата при обаждащия се. Когато не е посочена стойност, еквивалентният тип връщащ обект в Python е „None“.
Синтактично добивът е ключова дума, която може да се използва точно като ключовата дума за връщане, с изключение на изявлението за връщане прекратява изпълнението на вашата функция и изпраща обратно стойност на своя викащ. Функционалността на декларацията за връщане е да приема входове и да връща нещо на обаждащия се. За разлика от връщането, операторът на доходност изрично се използва за дефиниране на генератори, заменя връщащата стойност на функция, за да спре нейното изпълнение, като запазва локалните променливи непокътнати, докато операторът за връщане унищожава всички локални променливи в.