On Thu, 24 Jun 2010 08:51:26 pm Richard D. Moores wrote: > How about using sys.exit() instead?
sys.exit() is almost always evil. Here's the problem: One day, you find a nice library that has some function you need. Perhaps it's even a library you wrote yourself: from library import print_next_prime print_next_prime(5) => prints 7 And it works fine. So you decide to extend your program: from library import print_next_prime print_next_prime(5) print_next_prime(13) => prints 7 And mysteriously it stops working. The second function call never happens, only the first. What's going on? Eventually you work out that the print_next_prime function needlessly calls sys.exit. This being Python, you can fix it: from library import print_next_prime def print_next_prime2(n): try: print_next_prime(n) except SystemExit: pass print_next_prime2(5) print_next_prime2(13) so it's not the end of the world, but you shouldn't have to work around the poor design of the function in the first place. sys.exit is almost never needed. I'm yet to find a program that includes it where the program wouldn't be simpler to use, more flexible, more friendly, and generally more useful, without it. One (rare) exception is, when it is part of the user interface, not the backend. For instance, in a GUI application, you might link the Quit menu command to sys.exit. In Python, you rarely need to explicitly exit because your code will exit when it reaches the end of the file, or on an un-caught exception. -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor