On 4/25/2012 4:27 PM, Ron Adam wrote:
I was just trying to point out a module is closer to a class than it is to a function, and that is a good thing.
Each should only be executed once, and this is enforced for modules by the sys.modules cache.
Allowing a return or break in a module could make things more confusing.
Agreed. It is not actually necessary for functions to have an explicit return statement. I believe that there are languages that define the function return value as the last value assigned to the function name. def fact(n): if n > 1: fact = n*fact(n-1) else: fact = 1 (This is pretty close to how mathematicians might write the definition. It does, however, require special-casing the function name on the left of '='.) 'return' is, however, useful for returning out of more deeply nested constructs, especially loops, without setting flag variables or having multi-level breaks. This consideration does not really apply to the use case for module return. A virtue of defining everything in Python and then trying to import the accelerated override is that different implementations and versions thereof can use the same file even though they accelerate different parts and amounts (even none) of the module. -- Terry Jan Reedy