[Python-ideas] for/else statements considered harmful

Guido van Rossum guido at python.org
Thu Jun 7 18:57:00 CEST 2012


On Thu, Jun 7, 2012 at 9:45 AM, MRAB <python at mrabarnett.plus.com> wrote:
> On 07/06/2012 17:32, MRAB wrote:
>>>> On 07/06/2012 16:52, Alice Bevan–McGregor wrote:
>>>>>>  On 2012年06月07日 15:30:11 +0000, Mike Meyer said:
>>>>>>>>  Calling it "wrap-up processing" seems likely to cause people to think
>>>>  about it as meaning "finally". But if the else clause is not executed
>>>>  if the except clause is (as done by try/except/else), then there's no
>>>>  longer an easy way to describe it.
>>>>>>>>  It seems like adding an except would change the conditions under which
>>>>  the else clause is executed (unlike try/except/else), as otherwise
>>>>  there's no easy way capture the current behavior, where else is
>>>>  executed whenever there are no chunks left to process. But that kind
>>>>  of things seems like a way to introduce bugs.
>>>>>>>>>  Well, how about:
>>>>>>      for<var>   in<iterable>:
>>>          pass # process each<var>
>>>      except:  # no arguments!
>>>          pass # nothing to process
>>>      else:
>>>          pass # fell through
>>>      finally:
>>>          pass # regardless of break/fallthrough/empty
>>>>>>  Now for loops perfectly match try/except/else/finally!>:D  (Like
>>>  exception handling, finally would be called even with an inner return
>>>  from any of the prior sections.)
>>>>> Is the "finally" clause really necessary? Is it just the same as putting
>> it
>> after the loop?
>>> I've just noticed your remark about the finally clause being run even
> if there's a return. I can't say I like that; that's the job of
> try...finally.

You can stop right there. This design is not going anywhere.
-- 
--Guido van Rossum (python.org/~guido)


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /