http://www.python.org/dev/peps/pep-0342/ の consumer でおk

def consumer(func):
    def wrapper(*args,**kw):
        gen = func(*args, **kw)
        gen.next()
        return gen
    wrapper.__name__ = func.__name__
    wrapper.__dict__ = func.__dict__
    wrapper.__doc__ = func.__doc__
    return wrapper

@consumer
def func(n):
    while 1:
        val = yield n
        if val is not None:
            n += val
        else:
            print "send(any number)!"

f = func(1)
print f.send(2)
print f.send(3)
print f.send(4)