Генераторы в Python | Кодементор
Генератор — это функция Python, которая возвращает итерируемый объект из сгенерированной последовательности по одному. Вместо стандартного оператора return используется оператор yield. Когда интерпретатор оценивает определение функции, наличие оператора yield — это то, что классифицирует функцию как генератор. При каждом вызове генератора оператор yield возвращает только одно значение из итерации или диапазона значений. Возвращаемое значение указывает на текущий элемент. Доступ к следующему элементу можно получить, вызвав generate.next().
Предположим, например, что вы профессор в университете, занимающийся передовыми исследованиями, и NSF согласился финансировать ваш проект с обещанной суммой в 24000 долларов США в год, но будет переводить 6000 долларов США на ваш счет только ежеквартально после того, как вы проведете исследование на семестровой основе.
x = [1,2,3,4]
y = [10,20,30,40]
def gentr_fn(x,y):
for i in x:
yield i
while 1:
for j in y:
yield j
a = gentr_fn(x,y)
print a.next()
print a.next()
print a.next()
print a.next()
print a.next()
print a.next()
print a.next()
print a.next()
print a.next()
>>gentr_fn(x,y)
1 2 3 4 10 20 30 40 10 20
Еще один простой пример, который следует иметь в виду, чтобы понять работу генератора, — это банкомат или молочный киоск с монетоприемником.