24.11.17 02:50, Nick Coghlan пише:
If we went down that path, then a list comprehension like the following:

     results = [(yield future) for future in list_of_futures]

might be compiled as being equivalent to:

     def __listcomp_generator(iterable):
         result = []
         for future in iterable:
             result.append((yield future))
         return result

     results = yield from _listcomp_generator(list_of_futures)

The only difference between the current comprehension code and this idea is "an explicit yield expression in a comprehension implies the use of 'yield from' when calling the nested function".

Oh, nice! This is a much simpler solution! And it solves all related problems. I like it.

This has an overhead in comparison with inlining the code, but the latter can be considered just as an optimization. We can apply it when prove the need in optimizing this construction. For now it is enough if it just works.

The fact that two independent mental models lead to the same result is an argument for their correctness.

I'm not so sure about "yield" in generators, this will need further thoughts and experiments. "yield" can be used not only in the item expression, but in conditions and inner iterables.

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to