Python code written in 1998, how to improve/change it?

Bengt Richter bokr at oz.net
Wed Jan 25 05:38:10 EST 2006


On Tue, 24 Jan 2006 14:58:27 -0600, skip at pobox.com wrote:

>
>    Wolfgang> So basically if I want to write a long-running program in
>    Wolfgang> Python, it would make sense to code all functions that are
>    Wolfgang> likely to be called more than once as generators...
>
>If they need to resume their calculations from where they left off after the
>last yield.
Hm, I wonder how (all untested)

    def foo(x,y):
        return x**2+y**2
    for pair in pairs: print foo(*pair)

would compare to

    def bar(arglist):
        while True:
            x,y = arglist
            yield x**2 + y**2
    barargs = []
    ibar = bar(barargs).next
    for barargs[:] in pairs: print ibar()    

Of course, for simple stuff there's always manual inlining ;-)

    for x, y in pairs: print x**2, y**2

Hm, <bf warning> it might be interesting if one could bind arg list items of
a generator from the outside, e.g.,

    def gfoo(x, y):
        while True:
           yield x**2 + y**2

    ifoo = gfoo('dummy','dummy') # or first pair
    for ifoo.x, ifoo.y in pairs: print ifoo.next()

Regards,
Bengt Richter



More information about the Python-list mailing list