Hi all

It would be nice to write a generator in such a way that, in addition to 'yielding' each value, it performs some additional work and then 'returns' a final result at the end.

From Python 3.3, anything 'returned' becomes the value of the StopIteration
exception, so it is possible, but not pretty.

Instead of -
   my_gen = generator()
   for item in my_gen():
       do_something(item)
   [how to get the final result?]

you can write -
   my_gen = generator()
   while True:
       try:
           item = next(my_gen())
           do_something(item)
       except StopIteration as e:
           final_result = e.value

Is this the best way to achieve it, or is there a nicer alternative?

Thanks

Frank Millman


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to