[Tutor] Importing Modules Within Classes

Bill Campbell bill at celestial.net
Fri Oct 7 21:00:43 CEST 2005


On Fri, Oct 07, 2005, Kent Johnson wrote:
>Pierre Barbier de Reuille wrote:
>> (never import
>> a module in a small function likely to be called in an inner-loop !)
>
>That's good advice, but I would say "in a *time-critical* inner-loop". After the first import, importing a module is fast, it is just a few dictionary lookups (looking up the module in sys.modules) and a dictionary write (to the local namespace). It's only the first import that is potentially expensive.

Another way that I use this is to handle parts of a module that may not
always be used (e.g. curses routines for interactive use).

In this case we have a module that provides our curses interactive screen
routines, and it has something like this:

import os
os.environ['cursesstuff'] = True

Then in the more general purpose routines:

# stuff goes here that's not interactive

if os.environ.get('cursestuff']:
	import ...
	class ...

# other things that don't need the extra functions.

All that's necessary to activate the interactive classes and other related
stuff is to include the curses routines before importing the modules that
may or may not use them.

Bill
--
INTERNET:   bill at Celestial.COM  Bill Campbell; Celestial Software LLC
UUCP:               camco!bill  PO Box 820; 6641 E. Mercer Way
FAX:            (206) 232-9186  Mercer Island, WA 98040-0820; (206) 236-1676
URL: http://www.celestial.com/

``It wasn't raining when Noah built the ark.''


More information about the Tutor mailing list