Рубрики
Без рубрики

Итераторы и генераторы в Python

Этот пост направлен на описание основных механизмов итераторов и генераторов. Итератор р … Помечено с питоном, итератором, генератором.

Этот пост направлен на описание основных механизмов итераторов и генераторов.

Протокол итератор

Как и во многих языках программирования, Python позволяет итерацию по поводу сбора. Механизм итерации часто полезен, когда нам нужно сканировать последовательность, операцию, которая очень распространена в программировании. В Python протокол итератор включает два компонента: a потенциал и Итератор Отказ

Потенциал

потенциал это контейнер, через который мы хотим итерации. Это объект, который должен быть отсканирован, чтобы извлечь все элементы (или некоторые из них). Некоторые из известных порталов являются списки, кортежи, словари, диапазоны. В Протокол итератора потенциал Раскрывает ИТЕР Метод, который возвращает Итератор объект.

Итератор

Итератор Является ли структура данных, которая позволяет сканировать через контейнер. Это может показаться осложнением, но на самом деле, с отделением проблем, он позволяет разработчику отделить концепцию контейнера, из концепции итерации. Объект контейнера не должен хранить состояние итерации и, кроме того, на том же объекте многие итерации одновременно могут иметь место, поэтому сохранение состояния итерации в другом объекте является обязательным. Контейнер представляет собой набор элементов, в то время как итератор является своего рода обработчиком контейнера, он обнажает одни и те же элементы (принадлежащие контейнеру) один за другим с определенным порядком и. В Протокол итератора , Итератор Раскрывает два метода: ИТЕР и Следующий Отказ В то время как первый возвращает сам объект (это позволяет использовать как контейнер, так и итератор в для и в Заявления), последний возвращает следующий элемент из контейнера. Что это делает итератор закончить итерацию? Заставка исключение.

Примеры итераторов итераторов итераторов

Ниже приведен пример реализации протокола итератора:

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

Генератор

Генераторы являются методами с выступлениями. доходность Заявление оказывает возможность приостановить выполнение функции и хранить его состояние, так что его можно возобновить. За кулисами Python возвращает элемент управления функцией звонящего и сохранить состояние функции; Таким образом, при следующем исполнении функция начнется там, где она осталась, не позволяя разработчику беспокоиться о состоянии функции. Генераторы Являются итераторы , но не вице-версия.

Вот пример генератора:

и его использование:

Асинхронный генератор

Как Генераторы Они async Функция с доходность утверждение.

Выводы

  • Итераторы являются итераслеми.
  • Итераторы – это объекты, которые реализуют Протокол итератора состоящий в реализации обоих __er____ и __Next__ Отказ
  • Итераторы итерации останавливаются, когда Заставка Поднялся.
  • Генераторы – это методы с выступающими данными.
  • Async Generators – это асинхронные методы с выступающими дохода.
  • По возможности, генератор должен быть предпочтительным методом из-за его простоты, в то время как реализация протокола дает гораздо больше контроля.

Ресурсы

Оригинал: “https://dev.to/antomor/iterators-generators-in-python-1i1h”