Мы рассмотрели несколько высокоуровневых конструкций, которые позволяют описывать разного рода коллекции и бесконечные потоки данных.
Можно смело сказать, такие конструкции — это своего рода язык внутри языка. Высокоуровневые конструкции могут быть непонятны начинающим Python-программистам, но их выразительная сила может рассказать кратко и о многом.
Генерация с помощью yield
больше похожа на обычный императивный Python, однако использование этого стиля вынуждает интерпретировать код в голове.
Такая интерпретация сложнее, чем чтение обычного императивного кода. Эта сложность связана с тем, что в императивном коде не приходится придумывать, как приостановить функцию и как пройти по телу функции несколько раз.
Сопроцедуры
За рамками этого курса мы оставили сопроцедуры — это такие объекты-генераторы, которым можно посылать сообщения, а не только ожидать от них очередную порцию данных.
Сопроцедуры — это область большая и сложная. Даже опытным программистам непросто научиться писать, понимать и отлаживать код на сопроцедурах. При этом в Python на сопроцедурах строится вся асинхронность, хотя работать с ними можно и без полного понимания всех тонкостей.
Генераторы в объектном стиле
Есть еще одна сторона работы с генераторами, не раскрытая в данном курсе — это написание генераторов в объектном стиле. Для понимания этой области нужно познакомиться с основами ООП, а это уже материал последующих курсов. Часть сложных и узких тем осталась за рамками курса, но умение использовать описанные средства уже дает программисту мощные инструменты для работы с данными.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.