On 1/4/07, Neil Toronto <[EMAIL PROTECTED]> wrote:

Guido van Rossum wrote:
> On 1/4/07, Phillip J. Eby <[EMAIL PROTECTED]> wrote:
>
>> At 01:41 AM 1/4/2007 -0600, Ka-Ping Yee wrote:
>>
>>> How about this?
>>>
>>>      except ExcType, e:
>>>          try:
>>>              # body
>>>          finally:
>>>              e = None
>>>
>> It's a little bit more difficult to explain in the reference manual.  I
was
>> figuring we'd say that the exception variable is bound only in the body
of
>> the except clause; saying it becomes None when you exit sounds weirder
to
>> me.  How about:
>>
>>       except ExcType, e:
>>           try:
>>               # body
>>           finally:
>>               e = None
>>               del e
>>
>> Then we get the best of all three worlds: a clean explanation, a clean
>> implementation, and a pure source-to-source transformation.
>>
>
> Great! We need (a) an update to PEP 3100 and (b) a patch to implement
> this. (Once we have this we can talk about the rest of PEP 344;
> perhaps that PEP should also target Py3k only?)

Does it bother anybody that the variable e now has only block scope
rather than function scope like (almost) every other local? Do the
benefits outweigh the inconsistency?


Nope, doesn't bother me.

One could argue that there's precedent with generator comprehensions
(also list comprehensions in Py3k), but to me this *looks* more like a
for loop. As a first-time user I would expect it to behave the same way.


Well, how often does one reuse the exception variable past the 'execpt'
clause?  I admit I have used the leaked loop variant from a 'for' loop on
occasion, but that is not a big deal since I could get around it very
easily.

I think having the docs explicitly state the variable is local to the
'except' clause only is not that hard of a thing to grap.  We can also say
that if people really need the exception to stick around they can assign it
to another variable.

-Brett
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to