[Python-ideas] Revised**12 PEP on Yield-From
Nick Coghlan
ncoghlan at gmail.com
Thu Apr 23 14:05:25 CEST 2009
Erik Groeneveld wrote:
> Fourthly, there is the issue of boundary clashes. These are common in
> any data-processing problem. The input data is simply not structured
> or tokenized according to boundaries on a certain level of
> abstraction. This is the *very reason* to use coroutines and Jackson
> describes elegant ways to solve the problem. JSP requires a lookahead
> and the coroutines must have some way to support this. (Introducing a
> stream or buffer would put us back to where we started of course).
> After several tries I settled for a push-back mechanism as this was
> the most elegant way (IMHO) to solve it. (This is why I suggested
> 'return value, pushbackdata').
Generators will be allowed to return tuples under the PEP, just like
normal functions. So what's wrong with doing something like the following?:
def dummy_example():
pushback = None
while 1:
item, pushback = yield from read_item(pushback)
process_item(item)
def read_item(init_data=None):
if init_data is not None:
# Initialise state based on init_data
else:
# Use default initial state
# Read enough data to get a complete item
# Since this is a coroutine, there will be at least 1 yield
return item, excess_data
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
More information about the Python-ideas
mailing list