Ben Sizer <[EMAIL PROTECTED]> wrote: >[EMAIL PROTECTED] wrote: >> Yeah, I use it from time to time: >> >> for foo in bar: >> if foo matches some condition: >> print "sail to tahiti!" >> break >> else: >> print "abandon ship!" > >As a C++ programmer (which I'm sure undermines my argument before >you've even read it...), this feels 'backwards' to me. Although I am no >purist, the 'else' typically implies failure of a previous explicit >condition, yet in this case, it's executed by default, when the >previous clause was successfully executed. It would seem more natural >if the else clause was triggered by 'bar' being empty, [ ... ]
It does: >>> for foo in []: ... print foo ... else: ... print 'else' ... else I think it's clearer to see by comparing while with if: if False: do nothing else: do something while False: do nothing else: do something and getting to the for behaviour from while is trivial. That said, I've not had much call for it and was kind of surprised to find myself writing a genuine for ... else the other week. But it was the obvious way to do the task at hand, and I was happy it was there. -- \S -- [EMAIL PROTECTED] -- http://www.chaos.org.uk/~sion/ ___ | "Frankly I have no feelings towards penguins one way or the other" \X/ | -- Arthur C. Clarke her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
-- http://mail.python.org/mailman/listinfo/python-list