Некоторым генераторам нужно возвращать все элементы другого генератора:
>>> def enclose(gen, before='{', after='}'):
... yield before
... for x in gen:
... yield x
... yield after
...
>>> list(enclose(range(5)))
['{', 0, 1, 2, 3, 4, '}']
Однако предпочтительнее использовать
yield from
:
>>> def enclose(gen, before='{', after='}'):
... yield before
... yield from gen
... yield after
yield from
не только работает быстрее, но и автоматически обрабатывает передачу значений во вложенные генераторы, возврат значений из генераторов и даже выброс исключений внутри вложенного генератора.👉@BookPython
>>Click here to continue<<