[Python-Dev] issue5578 - explanation (original) (raw)
Guido van Rossum guido at python.org
Wed Apr 1 05:25:01 CEST 2009
- Previous message: [Python-Dev] issue5578 - explanation
- Next message: [Python-Dev] issue5578 - explanation
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Well hold on for a minute, I remember we used to have an exec statement in a class body in the standard library, to define some file methods in socket.py IIRC. It's a totally different case than exec in a nested function, and I don't believe it should be turned into a syntax error at all. An exec in a class body is probably meant to define some methods or other class attributes. I actually think the 2.5 behavior is correct, and I don't know why it changed in 2.6.
--Guido
On Tue, Mar 31, 2009 at 8:15 PM, Maciej Fijalkowski <fijall at gmail.com> wrote:
So. The issue was closed and I suppose it was closed by not entirely understanding the problem (or I didn't get it completely).
The question is - what the following code should do? def f(): a = 2 class C: exec 'a = 42' abc = a return C print f().abc (quick answer - on python2.5 it return 42, on python 2.6 and up it returns 2, the patch changes it to syntax error). I would say that returning 2 is the less obvious thing to do. The reason why IMO this should be a syntax error is this code: def f(): a = 2 def g(): exec 'a = 42' abc = a which throws syntax error. Cheers, fijal
Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/guido%40python.org
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] issue5578 - explanation
- Next message: [Python-Dev] issue5578 - explanation
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]