# numbered - это генератор
def numbered(it, n):
    '''it - итератор, n - число объектов, которое нужно вернуть за раз'''
    flag = True  # ага, опять уебанские флаги для выхода из циклов
    while flag:
        out = []
        for _ in range(n):
            try:
                out.append(next(it))
            except StopIteration:
                if out:
                    yield out
                flag = False
                break
        else:  # если не было break в цикле, то yield-им out
            yield out


##ошибка? TypeError: 'range' object is not an iterator
#for x in numbered(range(10), 3):
#    print(x)


# нужен вызов iter:
for x in numbered(iter(range(10)), 3):
    print(x)
