On Mon, 12 Oct 2009 11:32:27 -0700, Mensanator wrote: >> Nothing wrong with a having a break IMHO. > > My opinion is that there is everything wrong with having a break. I > don't think I have ever used one, I write code that doesn't depend on > that crutch.
Using break can avoid a lot of complication in loops. There's no need to force every loop to have a single exit point (or for that matter, for every function to have a single return). Compare the straightforward implementation of a simple linear search: for item in seq: if cond(item): print item break versus doing it without a break: found = False for item in seq: if not found and cond(item): print item or: found = False seq = iter(seq) while not found: item = seq.next() found = cond(item) if found: print item The first is obviously correct, and efficient (it stops searching when it has found a result). The second and third avoid using a break, but at the cost of complicated, inefficient code which isn't obviously correct. If you need to post-process item before returning, it's simple to replace the return with a break. > The best way to avoid the pitfalls of spaghetti code is to not write it > in the first place. break does not necessarily lead to spaghetti code. Avoiding break just because it is a "goto" is cargo-cult programming -- following the magic incantations with no understanding of the *reasons* for when gotos should be used and avoided. The danger with goto is that it is an *unstructured* jump. break, continue, return, yield, for, while are all *structured* jumps. They can be abused, like anything, but they're not inherently dangerous. -- Steven -- http://mail.python.org/mailman/listinfo/python-list