revive a generator

Terry Reedy tjreedy at udel.edu
Fri Oct 21 16:25:47 EDT 2011


Here is a class that creates a re-iterable from any callable, such as a 
generator function, that returns an iterator when called, + captured 
arguments to be given to the function.
class reiterable():
 def __init__(self, itercall, *args, **kwds):
 self.f = itercall # callable that returns an iterator
 self.args = args
 self.kwds = kwds
 def __iter__(self):
 return self.f(*self.args, **self.kwds)
def squares(n):
 for i in range(n):
 yield i*i
sq3 = reiterable(squares, 3)
for i in sq3: print(i)
for i in sq3: print(i)
 >>>
0
1
4
0
1
4
-- 
Terry Jan Reedy


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /