Python code written in 1998, how to improve/change it?
Bengt Richter
bokr at oz.net
Thu Jan 26 05:21:53 EST 2006
On Wed, 25 Jan 2006 15:50:27 -0600, skip at pobox.com wrote:
>
> >> If they need to resume their calculations from where they left off
> >> after the last yield.
>
> Wolfgang> Well, no, independently from that.
>
> Wolfgang> Just to avoid to inital overhead of the function call.
>
>How do you pass in parameters? Consider:
>
> def square(x):
> return x*x
>
>vs
>
> def square(x)
> while True:
> yield x*x
>
>How do you get another value of x into the generator?
>
> >>> def square(x):
> ... while True:
> ... yield x*x
> ...
> >>> g = square(2)
> >>> g
> <generator object at 0x3b9d28>
> >>> g.next()
> 4
> >>> g.next()
> 4
> >>> g.next(3)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: expected 0 arguments, got 1
>
>>> def square(xbox):
... while True: yield xbox[0]*xbox[0]
...
>>> xbox = [3]
>>> g = square(xbox)
>>> g.next()
9
>>> xbox[0]=4
>>> g.next()
16
>>> [g.next() for xbox[0] in xrange(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
One way to answer your question literally,
whatever it may do to your gag reflex ;-)
Regards,
Bengt Richter
More information about the Python-list
mailing list