Можно ли сделать yield вложенным во второй вызов?

Можно ли в python использовать yield вложенным во второй уровень вызова?

Вот такой вариант выдает ошибку: TypeError: 'NoneType' object is not iterable

def f1():
    for i in range(0, 5):
        yield i

def f2():
    f1()

for i in f2():
    print(i)

Хочется, что бы не делать перевызовы, типа такого:

def f1():
    for i in range(0, 5):
        yield i

def f2():
    for i in f1():
        yield i

for i in f2():
    print(i)

Ответы (1 шт):

Автор решения: splash58

Могу предложить использовать yield from

def f1():
    for i in range(0, 5):
        yield i

def f2():
    yield from f1()

for i in f2():
    print(i)
→ Ссылка