Что делает ключевое слово yield в Python?

Если компилятор определяет ключевое слово yield внутри функции, эта функция больше не возвращается через оператор return. Вместо этого он немедленно возвращает ленивый объект ожидающего списка, называемый генератором. Генератор истребитель. iterable - это что-то вроде списка или набора или диапазона или dict-view со встроенным протоколом для посещения каждого элемента в определенном порядке.

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

 
def makeSqure(n):
  i = 1
  while i < n:
      yield i * i
      i += 1
print(list(makeSqure(5)))

Выход

 
[1, 4, 9, 16]

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

Источник: http://net-informations.com/python/iq/yield.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector