Style question on recursive generators

Jeff Epler jepler at unpythonic.net
Wed Oct 20 15:43:22 CEST 2004


On Wed, Oct 20, 2004 at 09:12:59AM +0200, Alex Martelli wrote:
> Anyway, the bytecode that idiom makes is something like:
> 
>               3 LOAD_FAST                0 (other)
>               6 GET_ITER            
>         >>    7 FOR_ITER                10 (to 20)
>              10 STORE_FAST               1 (x)
>              13 LOAD_FAST                1 (x)
>              16 YIELD_VALUE         
>              17 JUMP_ABSOLUTE            7

I think that the other thing the compiler must recognize, beyond this
sequence, is that "x" is dead below the loop (no longer used, or stored
to before the next use).

On the other hand, I guess the new YIELD_VALUES opcode could leave the
last value on the top of the stack, replacing this sequence with
    LOAD_FAST    0 (other)
    GET_ITER
    YIELD_VALUES
    STORE_FAST   1 (x)
I was imagining that YIELD_VALUES would not put anything on the stack,
if it was used to implement a new 'yield from'/'yield *' statement.

Jeff
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20041020/8a8375b8/attachment.pgp>


More information about the Python-list mailing list