Generator and return value
Rob Gaddi
rgaddi at highlandtechnology.invalid
Wed Jun 7 12:00:36 EDT 2017
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.
More information about the Python-list
mailing list