1.5.2 for: else:
Stidolph, David
stidolph at origin.ea.com
Wed Jul 28 19:31:18 EDT 1999
More information about the Python-list mailing list
Wed Jul 28 19:31:18 EDT 1999
- Previous message (by thread): 1.5.2 for: else:
- Next message (by thread): 1.5.2 for: else:
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Please show your example using the else .. I'd like to see it. -----Original Message----- From: Vadim Chugunov [mailto:chega_ at yahoo.com] Sent: Wednesday, July 28, 1999 4:58 PM To: python-list at cwi.nl Subject: Re: 1.5.2 for: else: I would say that else: clause after a loop is really related to the if: controlling the break, rather than to the loop itself. When I first saw Python syntax for loops I said: "A-ha! So in Python I will not need a goto in situations like this: ----- for(Item* pitem=pseq->First(); pitem; pitem=pitem->Next()) if (pitem->key==42) goto Found; pitem = pseq->Insert(new Item()); Found: // use item pointed to by pitem ----- In fact, I do not see any other good use for else: clause in a loop. Maybe the docs should just explicitly say what this feature is good for ? Vadim William Tanksley <wtanksle at dolphin.openprojects.net> wrote in message news:slrn7pum9t.2ro.wtanksle at dolphin.openprojects.net... > On Wed, 28 Jul 1999 00:50:14 GMT, Fredrik Lundh wrote: > >William Tanksley <wtanksle at dolphin.openprojects.net> wrote: > >> The very worst part of the current else: behavior is that it changes the > >> meaning of else. In other constructs, else is an alternate path to take > >> if the data being tested fails a single expression test. In this > >> contruct, else is a path taken if the code block belonging to the previous > >> test executes a certain instruction. > > >nope. you've got it all backwards. consider this: > > > for an "if" statement, "else" is a path taken if the > > expression evaluates to false. > > Close enough -- I would say it's the path taken if the 'if' block isn't > executed. > > > for a "while" statement, "else" is a path taken if the > > expression evaluates to false. or in other words, > > when the loop terminates by natural causes. > > In other words, it executes when you'd expect an 'else' to not execute -- > 'else' doesn't mean "natural causes". > > > for a "for" statement, "else" is a path taken when > > there are no more elements to loop over. or > > in other words, when the loop terminates by > > natural causes. > > In addition to the above carping, I have to add that the code following > the for (or while) loop is what I'd expect to execute after the loop > terminates. > > >not that complicated, was it? > > I didn't think it was either, but it seems that in spite of my initial > understanding, I still managed to reverse it accidentally. > > >now, what you seem to have trouble with isn't > >the "else"-clause -- it's the behaviour of "break": > > >"else" always works the same way. and so does > >"break". what else did you expect from Guido?
- Previous message (by thread): 1.5.2 for: else:
- Next message (by thread): 1.5.2 for: else:
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list