Что такое генераторы и как они работают в Python

автор рубрика
Что такое генераторы и как они работают в Python

В прошлый раз мы говорили про списки в Python. Сегодня поговорим про особенности работы с Python-генераторами. Читайте далее про особенности работы генераторов в языке Python, которые обеспечивают разработчика возможностью оптимального использования ресурсов.

Что представляют собой генераторы в Python

Генераторы — это объекты, выполнение которых можно возобновлять и приостанавливать. При этом они возвращают объект, который можно итерировать (возвращать каждое следующее значение по отдельности). Существуют следующие виды генераторов в Python [1]:

  • генераторные выражения — возвращают объекты, производящие результаты по запросу (обычно с помощью метода next());
  • генераторные функции — функции, которые возвращают значения каждой итерации. Однако вместо оператора return в них используется инструкция yield. Также для вызова генераторных функций используется цикл.

Особенности работы с генераторами в Python: несколько практических примеров

Для создания объекта-генератора в Python можно использовать так называемое генераторное выражение, которое внутри себя использует цикл. В качестве примера рассмотрим пример генератора, который будет считать квадраты чисел от 1 до 4. Для создания такой последовательности используется функция range() [1]:

a = (i**2 for i in range(1,5))

Для вызова значений генератора используется метод next(). Причем, для вывода каждого нового значения, необходимо каждый раз вызвать метод next():

next(a)
# 1
next(a)
# 4
next(a)
# 9
next(a)
# 16
next(a)
# StopIteration exception

Стоит обратить внимание, что если вызвать метод next() после вывода последнего элемента, генератор сотрет его из памяти и выдаст исключение StopIteration.

machine learning курсы, python machine learning уроки, курсы по машинному обучению, предобработка данных python, python машинное обучение курс, машинное обучение python курс, предобработка данных python, нейронные сети python, обработка естественного языка python, machine learning курсы, задача классификации python
Результат работы итератора после вывода всех элементов

В Python генератор можно создавать не только с помощью выражений, но и с помощью специальных генераторных функций. Единственным отличием от обычной функции будет лишь то, что в функциях-генераторах вместо оператора return используется инструкция yield, которая приостанавливает генератор и возвращает какое-то значение. В качестве примера создадим генераторную функцию для вычисления квадратов чисел от 1 до 4, как это было выше [1]:

def gen_sqr(m):
    for i in range (1,m):
        yield i**2

Еще одной отличительной особенностью такой функции будет то, что вызывается она через цикл:

a=gen_sqr
for i in a(6):
    print (i)
# 1
# 4
# 9
# 16
# 25

Таким образом, благодаря генераторам, в Python существует возможность оптимального и экономного использования памяти. Это делает Python универсальным и надежным средством для работы с производительными приложениями, а также с Big Data обработкой.

Графовые алгоритмы. Бизнес-приложения

Код курса
GRAF
Ближайшая дата курса
25 июля, 2022
Длительность обучения
24 ак.часов
Стоимость обучения
60 000 руб.

Освоить Python на профессиональном уровне в разработчика различных приложений и прочих прикладных областях Data Science вы сможете на практических курсах по Python в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

Записаться на курс

Смотреть раcписание

Комментировать