Duncan Booth wrote: > Peter Otten <__pete...@web.de> wrote: > >> Ulrich Eckhardt wrote: >> >>> I'm looking for a way to write code similar to this C code: >>> >>> while(rq = get_request(..)) { >>> handle_request(rq); >>> } >>> >> Assuming get_request(...) is called with the same arguments on each >> iteration and uses None to signal that there is no more data: >> >> from functools import partial >> >> for rq in iter(partial(get_request, ...), None): >> handle_request(rq) >> >> Peter > > and the next step on from this is to realise that the problem isn't how to > code the calls to get_request(), the problem is actually that > get_request() itself isn'ty Pythonic. Rewrite it as a generator, rename it > to reflect that it now generates a sequence of requests and the code > becomes: > > for rq in incoming_requests(...): > handle_request(rq)
...and a likely implementation would be def incoming_requests(...): while True: rq = ... # inlined version of get_request() if not rq: break yield rq In other words: It's turtles all the way down... Peter -- http://mail.python.org/mailman/listinfo/python-list