break in a module
Erik Max Francis
max at alcyone.com
Thu Jun 16 21:21:35 EDT 2011
More information about the Python-list mailing list
Thu Jun 16 21:21:35 EDT 2011
- Previous message (by thread): break in a module
- Next message (by thread): break in a module
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Chris Angelico wrote: > On Fri, Jun 17, 2011 at 10:48 AM, Steven D'Aprano > <steve+comp.lang.python at pearwood.info> wrote: >> Perhaps the most sensible alternative is conditional importing: >> >> # === module extras.py === >> >> def ham(): pass >> def cheese(): pass >> def salad(): pass >> >> >> # === module other.py === >> >> def spam(): pass >> >> if not some_condition: from extras import * >> > > This would, if I understand imports correctly, have ham() operate in > one namespace and spam() in another. Depending on what's being done, > that could be quite harmless, or it could be annoying (no sharing > module-level constants, etc). No, he's using `from ... import *`. It dumps it all in the same namespace (which is usually why it's frowned upon, but in his example it's kind of the point). I don't see it as a very compelling solution beyond putting code using a simple `if`. And it's still rather hard to imagine a serious use case. > As to which keyword is used, I would be inclined to go with 'return' > rather than 'break'. The module is thus a procedure in its own right. > Of course, that's assuming the feature's actually needed, which isn't > certain by any means. Neither makes sense. `break` exits out of looping structures, which the top-level code of a module most certainly is not. `return` returns out of functions or methods and -- most importantly -- _returns something_. (`return` without an argument returns None). Modules have no facility to return anything, nor would it make much sense at all to do so. This is an example of a problem that simply does not need solving with additional language changes: There are already perfectly good (and, perhaps more importantly, clear) facilities to do whatever it is you want to do. If you want to exit, call `sys.exit`. If you want to conditionally execute some code, use `if`. If you want to indicate an exceptional condition, raise an exception. -- Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/ San Jose, CA, USA && 37 18 N 121 57 W && AIM/Y!M/Skype erikmaxfrancis Human salvation lies in the hands of the creatively maladjusted. -- Dr. Martin Luther King, Jr.
- Previous message (by thread): break in a module
- Next message (by thread): break in a module
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list