Le Jeudi 08 Juin 2006 22:02, abcd a écrit*:
def foo():
import bar
bar.printStuff()
foo()
foo()
foo()
foo()
...will that re-import bar 4 times...or just import it once? is this a
big performance hit?
Import a module more than once doesn't execute the code of this module more
than once.
I don't know what's your need but as some have spoke of reload I just want to
warn you, reload a module means that you want invalidate the code of this and
replace it by a new one, this is not like a normal but deeper import. Also,
you'll have to deal yourself wiith references to your old code.
Hmmm, the following example should be clear than my explanations :)
n [1]: import temp
In [2]: class a(temp.Base
temp.Base
In [2]: class a(temp.Base
temp.Base
In [2]: class a(temp.Base
temp.Base
In [2]: class a(temp.Base) : pass
...:
In [3]: reload(temp)
Out[3]: <module 'temp' from 'temp.pyc'>
In [4]: class b(temp.Base) : pass
...:
In [7]: b.__base__, a.__base__, b.__base__ is a.__base__
Out[7]: (<class 'temp.Base'>, <class 'temp.Base'>, False)
In [8]: isinstance(a(), temp.Base), isinstance(b(), temp.Base)
Out[8]: (False, True)
--
_____________
Maric Michaud
_____________
Aristote -
www.aristote.info
3 place des tapis
69004 Lyon
Tel: +33 426 880 097