Re: Function to import module to namespace
- From: John Machin <sjmachin@xxxxxxxxxxx>
- Date: Sun, 29 Jun 2008 17:18:02 -0700 (PDT)
On Jun 30, 9:52 am, bvdp <b...@xxxxxxxxxxxx> 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
.
- References:
- Re: Function to import module to namespace
- From: bvdp
- Re: Function to import module to namespace
- Prev by Date: RE: Use of the "is" statement
- Next by Date: How to invoke the Python idle
- Previous by thread: Re: Function to import module to namespace
- Next by thread: list extension ?
- Index(es):
Relevant Pages
|