"[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > Interestingly, I just saw a thread over at TurboGears(or is it this > group, I forgot) about this multiple return issue and there are people > who religiously believe that a function can have only one exit point. > > def f(): > r = None > for i in range(20): > if i > 10: > r = 10 > break > if r is None: something > else: return r
"Single entrance, single exit" is a philosophy (religion?) that's been around for a while. The basic thought is that every code block should have a single entrance and a single exit. Back in the dark old days of gotos, there was a lot of spaghetti code written with gotos jumping all over the place, even in and out of the middle of loops. Then, in 1968, Dijkstra wrote his famous "Go To Statement Considered Harmful" (http://www.acm.org/classics/oct95/) which spawned the whole structured programming concept, and SESE is the logical outgrowth of that. The problem with SESE is that if you follow it strictly, you end up with things like the example given above where you have to invent some temporary variable, and an extra test at the end of the loop. The cure is worse than the disease. In any case, in a language which has exceptions, it's almost impossible to really have true SESE, since an exception could be thrown from almost anywhere. To be fair, there are those who use this to argue that exceptions themselves are a bad thing. In my last job, the official style guide said to not use exceptions in C++ because they generate confusing flow of control, but I think that's becomming the minority view these days. -- http://mail.python.org/mailman/listinfo/python-list