On 06/06/2017 11:13 PM, Frank Millman wrote:
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
class MyGeneration:
def __iter__(self):
yield from ('people', 'try', 'to', 'put', 'us', 'down')
self.final = 'talking about'
mygen = MyGeneration()
for item in mygen:
print(item)
print(mygen.final)
--
Rob Gaddi, Highland Technology -- www.highlandtechnology.com
Email address domain is currently out of order. See above to fix.
--
https://mail.python.org/mailman/listinfo/python-list