[Python-Dev] problem with genexp (original) (raw)

Neal Norwitz nnorwitz at gmail.com
Tue Oct 11 06:15:22 CEST 2005


There's a problem with genexp's that I think really needs to get fixed. See http://python.org/sf/1167751 the details are below. This code:

foo(a = i for i in range(10))

generates "NameError: name 'i' is not defined" when run because:

2 0 LOAD_GLOBAL 0 (foo) 3 LOAD_CONST 1 ('a') 6 LOAD_GLOBAL 1 (i) 9 CALL_FUNCTION 256 12 POP_TOP 13 LOAD_CONST 0 (None) 16 RETURN_VALUE

If you add parens around the code: foo(a = i for i in range(10)) You get something quite different:

2 0 LOAD_GLOBAL 0 (foo) 3 LOAD_CONST 1 ('a') 6 LOAD_CONST 2 (<code object at 0x2a960baae8, file "", line 2>) 9 MAKE_FUNCTION 0 12 LOAD_GLOBAL 1 (range) 15 LOAD_CONST 3 (10) 18 CALL_FUNCTION 1 21 GET_ITER 22 CALL_FUNCTION 1 25 CALL_FUNCTION 256 28 POP_TOP 29 LOAD_CONST 0 (None) 32 RETURN_VALUE

I agree with the bug report that the code should either raise a SyntaxError or do the right thing.

n



More information about the Python-Dev mailing list