revive a generator

Yingjie Lan lanyjie at yahoo.com
Fri Oct 21 03:59:04 EDT 2011


----- Original Message -----

> From: Paul Rudin <paul.nospam at rudin.co.uk>
> To: python-list at python.org
> Cc: 
> Sent: Friday, October 21, 2011 3:27 PM
> Subject: Re: revive a generator
> 
> 
> The language has no explicit notion of a request to "revive" a
> generator. You could use the same syntax to make a new generator that
> yeilds the same values as the one you started with if that's what you
> want. 
> 
> As we've already discussed if you want to iterate several times over the
> same values then it probably makes sense to compute them and store them
> in e.g. a list (although there are always trade-offs between storage use
> and the cost of computing things again).
> 
> 


What if the generator involves a variable from another scope,
and before re-generating, the variable changed its value.
Also, the generator could be passed in as an argument,
so that we don't know its exact expression.

>>> vo = 34
>>> g = (vo*x for x in range(3))
>>> def myfun(g):
for i in g: print(i)
vo  += 3
revive(g) #best if revived automatically
for i in g: print(i)
myfun(g)

Yingjie



More information about the Python-list mailing list