On Jun 30, 9:52 am, bvdp <[EMAIL PROTECTED]> wrote: > Terry Reedy wrote: > > > > > <snip> > > > > > Do you mean something like this? > > <snip> > > > >>> math.__dict__.update(string.__dict__) > > >>> dir(math) > > ['Formatter', 'Template', '_TemplateMetaclass', '__builtins__', > > <snip> > > I think this is working.... First off, 2 module files: > > funcs.py > def func1(): > print "I'm func1 in funcs.py" > > more.py > def func2(): > print "I'm func2 in 'more.py'" > > and my wonderful main program: > > xx.py > import funcs > def addnewfuncs(p): > x = __import__(p) > funcs.__dict__.update(x.__dict__) > funcs.func1() > addnewfuncs('more') > funcs.func2() > > The first problem I had was getting import to accept a variable. It > doesn't seem to, so I used __import__(). Then, I had to remember to > assign this to a variable ... and then it appears to work just fine. > > Did I miss anything in this???
You are updating with *everything* in the 'more' module, not just the functions. This includes such things as __name__, __doc__, __file__. Could have interesting side-effects. One quick silly question: why do you want to do this anyway? Sorry, *two* quick silly questions: are the add-on modules under your control, or do you want to be able to do this with arbitrary modules? [If under your control, you could insist that such modules had an __all__ attribute with appropriate contents] A third: why do you want to import into an existing namespace? Now that you know about __import__, why just not call the functions where they are? Cheers, John -- http://mail.python.org/mailman/listinfo/python-list