[Python-ideas] PEP 380 alternative: A yielding function

Anders J. Munch 2010 at jmunch.dk
Wed Jul 28 18:31:51 CEST 2010


Carl M. Johnson wrote:
 > What would this code do:
 >
 > def yield_if_true(x):
 >      if x:
 >          yield_(x)
 >
 > def maybe_yield(x):
 >     if calculate_property(x):
 >         yield_if_true(x)
 >     else:
 >         return None
 >
 > maybe_yield(5)

maybe_yield is not a generator, because it does not use the yield
keyword.  Nothing changed about that.
As there's no generator here, yield_(x) would raise some exception:
"RuntimeError: No generator found for yield_"

Regular yield syntax remains the preferred option - with yield_ as a
supplement for when delegation is needed.  Perhaps a better name for
it would be 'yield_outer' or 'nonlocal_yield'.

regards, Anders




More information about the Python-ideas mailing list