она построена на основе генераторов(корутин) так вот она достигается с помощью клиента(вызывающая сторона)—-генератор который использует yield from по сути это await и субгенератор(обычный генератор где используется yield) так вот мы можем реализовать невытесняющую многозадачность отправляя генератору данные методом send и генератор возвращает нам управление по достижению следующего yield
Но я не понял один момент зачем нам генератор с yield from ? он по сути открывает канал между клиентским кодом и субгенератором......мы же можем напрямую с генераторами работать так ведь ?
и каким же образом ты будешь "работать с генераторами напрямую". вот есть у тебя два генератора, один вызывается из второго
def gen2(): yield 2 def gen1(): yield gen2() def gen1_from(): yield from gen2() print(next(gen1())) print(next(gen1_from()))
а почему вызывающая сторона не сможеть напрямую работать конечным генератором ? как я понял генератор с yield from это промежуточное звено
вот тут как я понял yield from просто инициализирует генератор и вызывает его да ?
эм... тут yield from это очень условно for item in subgenerator(): yield item
yield from сам по себе ничего не "инициализирует" и не "вызывает"
а что он делает тогда ?
ну а если не условно а более подробно ?) есть ли какая нибудь статья где подробно описано это все ?
Ну тут yield from иелдит элемент другого генератора наверх
наверх тоесть клиентскому коду ?
К точке вызова
Обсуждают сегодня