This doesn't work, but is there any elegant way to do something like this? def gen2(): yield "hello" def gen1(): gen2() yield "world" for i in gen1(): print i ---- output ---- hello world I'm doing it this way now: def gen2(): yield "hello" def gen1(): for i in gen2(): yield i yield "world"