Sure.
Simple use-case: Decorate the yielded values and the return value of a
generator. Right now, with `yield from` you can only decorate the return
value, whereas with a for loop you can decorate the yielded values, but you
sacrifice the returned value altogether.
```
def ret_decorator(target_generator):
returned_value = yield from target_generator()
return decorate_ret(returned_value)
def yield_decorator(target_generator):
for yielded_value in target_generator:
yield decorate_yield(yielded_value)
# Nothing to return. the target return value was
# consumed by the for loop
```
With the proposed syntax, you can decorate both:
```
def decorator(target_generator):
for yielded_value in target_generator:
yield decorate_yield(yielded_value)
else returned_value:
return decorate_ret(returned_value)
```
Please let me know if you are interested in a more concrete case such as a
domain-specific application (I can think of progress bars, logging,
transfer rate statistics ...).
Best,
VS
On Mon, Jun 27, 2016 at 5:06 PM, Michael Selik <[email protected]>
wrote:
> On Mon, Jun 27, 2016 at 12:53 AM Victor Savu <
> [email protected]> wrote:
>
>> capture the [StopIteration] value in the `else` statement of the `for`
>> loop
>>
>
> I'm having trouble thinking of a case when this new feature is necessary.
> Can you show a more realistic example?
>
--
https://mail.python.org/mailman/listinfo/python-list