Chris Angelico wrote:
On Fri, Jun 17, 2011 at 10:48 AM, Steven D'Aprano
<steve+comp.lang.pyt...@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 && m...@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.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to