On Sat, 18 Jun 2011 12:36:42 +1000, Cameron Simpson wrote: > On 17Jun2011 06:00, Steven D'Aprano > <steve+comp.lang.pyt...@pearwood.info> wrote: | If we were to have a > "exit this module early, but without exiting Python | altogether" > statement, I'd consider "exit" to be the most descriptive | name, > although it would clash with existing uses of the word, e.g. | > sys.exit(). Overloading "break" strikes me as disagreeable, but not as | > disagreeable as overloading "return" or "in" :) > > Just to throw another approach into the mix (because I was thinking > about the "finally" word), what about: > > raise StopImport > > along the lines of generators' "raise StopIteration". > > Then the import machinery can catch it, no new keyword is needed and no > existing keyword needs feature creeping.
The only problem is that the importing module needs to catch it, or else you get a traceback. The importer shouldn't need to care what goes in inside the module. Something like this: spam() if condition: exit # halt, stop, whatever ham() cheese() should be the equivalent to: spam() if not condition: ham() cheese() I don't think the use-case for this is convincing enough to need it, but it's an interesting concept. I once played around with a mini-language for config files that included a "STOP" command, so that: key = value STOP everything under here is ignored but I think it was a feature in search of a use. -- Steven -- http://mail.python.org/mailman/listinfo/python-list