Русский
Открыть в Telegram

Пост yield from — элегантная передача управления

22 октября 2026
Б
Библиотека Python разработчика | Книги по питону
yield from — элегантная передача управления Если вы пишете генераторы, которые вызывают другие генераторы — забудьте про for x in sub(): yield x. Есть способ проще и мощнее. Оператор yield from позволяет передавать элементы из подгенератора напрямую, без лишнего кода. Но фишка не только в лаконичности — он также автоматически пробрасывает исключения и возвращаемые значения из подгенератора. Вот классика: def gen(): for x in range(3): yield x def wrapper(): for x in gen(): yield x Можно короче и лучше: def wrapper(): yield from gen() Но главное — yield from пробрасывает return-значение из подгенератора (начиная с Python 3.3): def sub(): yield 1 yield 2 return 'done' def main(): result = yield from sub() print('Sub returned:', result) for _ in main(): pass # Выведет: Sub returned: done А ещё через yield from можно проксировать значения внутрь генератора — например, в сопрограммах: def delegator(): result = yield from coroutine() print('coroutine done:', result) def coroutine(): x = yield y = yield return x + y g = delegator() next(g) # Старт next(g) # coroutine ждет x g.send(10) # x = 10 print(g.send(20)) # y = 20 → return 30 # Выведет: coroutine done: 30 Итог: если вы пишете генераторы — освоение yield from даст вам лаконичный синтаксис, проброс return-значений, исключений и взаимодействие на новом уровне. 📲 Мы в MAX 👉@BookPython
5 · 829 ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуФункция map вызывает другую функцию для каждого элемента итерируемого объекта. Это значит, что функция должна принимать одно значение в качестве аргумента: In :ББиблиотека Python разработчика | Книги по питонуКогда вы используете модуль multiprocessing, и в одном из процессов происходит исключение, оно передаётся в основную программу с помощью механизма сериализации
это сообщение
ББиблиотека Python разработчика | Книги по питонуdefault_factory в dataclass: мощнее, чем кажется Многие используют dataclass как удобный способ задать структуру с полями. Но редко кто по-настоящему раскрываетББиблиотека Python разработчика | Книги по питонуСкрытые фичи Enum: как выжать максимум Многие используют Enum как простой список констант. Но у enum.Enum в Python есть куда больше возможностей — и они могут с
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 954подписчиков552средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем