How to identify generator/iterator objects?

Kenneth McDonald kenneth.m.mcdonald at
Wed Oct 25 21:36:46 CEST 2006

I'm trying to write a 'flatten' generator which, when give a 
generator/iterator that can yield iterators, generators, and other data 
types, will 'flatten' everything so that it in turns yields stuff by 
simply yielding the instances of other types, and recursively yields the 
stuff yielded by the gen/iter objects.

To do this, I need to determine (as fair as I can see), what are 
generator and iterator objects. Unfortunately:

 >>> iter("abc")
<iterator object at 0x61d90>
 >>> def f(x):         
...     for s in x: yield s
 >>> f
<function f at 0x58230>
 >>> f.__class__
<type 'function'>

So while I can identify iterators, I can't identify generators by class.

Is there a way to do this? Or perhaps another (better) way to achieve 
this flattening effect? itertools doesn't seem to have anything that 
will do it.


More information about the Python-list mailing list