Style question on recursive generators

Carlos Ribeiro carribeiro at
Mon Oct 18 18:52:37 CEST 2004

On Mon, 18 Oct 2004 17:42:15 +0200, Stefan Behnel
<behnel_ml at> wrote:
> Carlos Ribeiro schrieb:
> > def walk(self):
> >    """generator-based recursive tree traversal"""
> >    yield child
> >    for child in childs:
> >         transfer child.walk()
> >
> > It's quite weird -- a generator plus a direct flow-of-execution
> > transfer. It's not a goto, its not a co-routine... It requires a new
> > keyword ('transfer', in this case), which _is_ a real problem --
> > something like this can't be lightly proposed. In this case, it's just
> > a thought experiment, at this point; nothing serious, and far from a
> > proposal.
> I know what it feels like. I had to implement the same thing for a
> recursive parser once - looks somewhat inefficient to iterate over a
> iterator only for yielding the iterator's results...
> Maybe you know the itertools module?
> It has some nice functions that can make this sort of code more readable
> (and maybe even more efficient). You may find itertoold.chain especially
> useful.

Thanks -- that's a really good reference. I think I should read more
of the documentation instead of banging up my own home made solution
:-) Anyway, it does not solve the recursion problem per se, but it
gave me some ideas on own can I rewrite the code. I'll try it later...

Carlos Ribeiro
Consultoria em Projetos
mail: carribeiro at
mail: carribeiro at

More information about the Python-list mailing list