Генератор

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Генератор — функция, что помнит, в каком месте был предыдущий возврат (return), и при след. вызове возобновляет работу с прерванного места. Функция, что может возвращать управление (и вычисленные результаты) несколько раз, запоминая своё состояние и точку возврата в предыдущем вызове.

Использование

Итераторы

Одним из способов реализации итераторов явл. использование генераторов.

Большинство итераторов естест. обр. описываются через генераторы, а из-за того, что генераторы сохраняют своё текущее состояние между вызовами, они хорошо подходят для сложных итераторов, реализация которых требует сложных структур данных для запоминания текущего положения в коллекции, напр., обход дерева.

Примеры

Пример генератора, возвращающего числа Фибоначчи, с применением оператора yield ЯП Python:

def fibonacci():
	a, b = 0, 1
	while True:
		yield a # return a, + запоминает место рестарта для след. вызова
		a, b = b, a+b

for number in fibonacci(): # Используем генератор как итератор
	print number