[TriLUG] making a python module

Chris Calloway cbc at unc.edu
Tue Feb 19 18:49:57 EST 2008


On 2/12/2008 10:27 AM, Joseph Mack NA3T wrote:
> What might you want to initialise in a python module on 
> loading (and not running)?

I just saw this.

The most common case is a module will load more modules when loaded. 
That is, you import a module and the first lines in the module you load 
will be import statements which load yet more modules (and in turn, 
those modules may import still more modules).

The module might selectively load certain other modules in a plug-in 
architecture based on things the module can introspect from the 
environment into which it was loaded.

You might want to cache some data from somewhere.

If you are doing metaprogramming in the module, you might want to create 
some new objects of the metatype you just loaded.

If you've defined some factory methods in the module, you might want to 
fire out some objects.

I think there's no end of uses for executing global namespace code when 
loading a module. I can think of no case where a module would be useful 
without executing code in its global namespace.

Basically, all the statements in a Python module are executed in order 
when loaded, whether as a script or as an import. The execution of most 
statements in a module, though, just define code objects (i.e., function 
objects, class objects, etc.) which will be used later (in the script, 
or by another script or module importing the module). So you might think 
of that as function and class objects getting "initialized" with their 
byte code.

-- 
Sincerely,

Chris Calloway
http://www.secoora.org
office: 332 Chapman Hall   phone: (919) 599-3530
mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599





More information about the TriLUG mailing list