Python yield и stopiteration в одном цикле?

У меня есть генератор, в котором я хотел бы добавить начальное и конечное значение к фактическому содержимому, это примерно так:

# any generic queue where i would like to get something from
q = Queue()

def gen( header='something', footer='anything' ):
    # initial value header
    yield header

    for c in count():
        # get from the queue
        i = q.get()
        # if we don't have any more data from the queue, spit out the footer and stop
        if i == None:
            yield footer
            raise StopIteration
        else:
            yield i

Конечно, приведенный выше код не работает - моя проблема в том, что я хотел бы, чтобы, когда в очереди ничего не осталось, я хочу, чтобы генератор выдавал нижний колонтитул И поднимал StopIterator . есть идеи?

Ура,

18
задан twasbrillig 23 November 2014 в 10:32
поделиться