[prev in list] [next in list] [prev in thread] [next in thread]
List: python-ideas
Subject: Re: [Python-ideas] for/else statements considered harmful
From: Calvin Spealman <ironfroggy () gmail ! com>
Date: 2012-06-16 17:05:48
Message-ID: CAGaVwhQQQYvbOjKuLCznKGKf8doAWpR1ZFMMPHa+r2MGn=1ntQ () mail ! gmail ! com
[Download RAW message or body]
On Wed, Jun 6, 2012 at 7:20 PM, Alice Bevan–McGregor
<alice@gothcandy.com> wrote:
> Howdy!
>
> Was teaching a new user to Python the ropes a short while ago and ran into
> an interesting headspace problem: the for/else syntax fails the obviousness
> and consistency tests. When used in an if/else block the conditional code
> is executed if the conditional passes, and the else block is executed if the
> conditional fails. Compared to for loops where the for code is repeated and
> the else code executed if we "naturally fall off the loop". (The new user's
> reaction was "why the hoek would I ever use for/else?")
I read it not as for/else and while/else, but break/else and this has
been a much
more natural framing for myself and those I've used the framing to explain the
behavior to.
> I forked Python 3.3 to experiment with an alternate implementation that
> follows the logic of pass/fail implied by if/else: (and to refactor the
> stdlib, but that's a different issue ;)
>
> for x in range(20):
> if x > 10: break
> else:
> pass # we had no values to iterate
> finally:
> pass # we naturally fell off the loop
>
> It abuses finally (to avoid tying up a potentially common word as a reserved
> word like "done") but makes possible an important distinction without having
> to perform potentially expensive length calculations (which may not even be
> possible!) on the value being iterated: that is, handling the case where
> there were no values in the collection or returned by the generator.
>
> Templating engines generally implement this type of structure. Of course
> this type of breaking change in semantics puts this idea firmly into Python
> 4 land.
>
> I'll isolate the for/else/finally code from my fork and post a patch this
> week-end, hopefully.
>
> — Alice.
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas@python.org
> http://mail.python.org/mailman/listinfo/python-ideas
--
Read my blog! I depend on your acceptance of my opinion! I am interesting!
http://techblog.ironfroggy.com/
Follow me if you're into that sort of thing: http://www.twitter.com/ironfroggy
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
http://mail.python.org/mailman/listinfo/python-ideas
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic