[Python-Dev] issue5578 - explanation

Maciej Fijalkowski fijall at gmail.com
Wed Apr 1 06:16:30 CEST 2009


Shame on me indeed.

On Wed, Apr 1, 2009 at 5:38 AM, Guido van Rossum <guido at python.org> wrote:
> OK that might change matters. Shame on you though for posting a patch
> without any explanation of the issue.
>
> On Tue, Mar 31, 2009 at 8:36 PM, Maciej Fijalkowski <fijall at gmail.com> wrote:
>> Because classes have now it's own local scope (according to Martin)
>>
>> It's not about exec in class, it's about exec in class in nested function.
>>
>> On Wed, Apr 1, 2009 at 5:25 AM, Guido van Rossum <guido at python.org> wrote:
>>> 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/)
>>>
>>
>
>
>
> --
> --Guido van Rossum (home page: http://www.python.org/~guido/)
>


More information about the Python-Dev mailing list