Each module has its own "namespace", which is like a dictionary of objects that the module can "see". I use the term dicitionary because locals() and globals() both return dictionaries -- someone may correct me on this (or confirm what I say)...
You have local and global variables. Locals are variables in the scope of a function. def myfun(): localvar = 1 `globals' are really 'module' global only. # mymodule global_var = 3 def myfun() print global_var # This is a *gotcha* -- you can't change global variables this way. # here, a new local variable global_var is initialized. global_var = 3 def changeglobal(): # you have to use `global' to instruct python to use the `global' instance of the variable # instead of creating a new one when you assign to it. global global_var global_var = 3 You can only see variables you've created or modules you've imported. Becase you haven't imported string in m2 or m3, you can't see them. hth, jw On 4/19/05, Mage <[EMAIL PROTECTED]> wrote: > Hello, > > I thought that this will work: > > #m1.py > def f1(): > return string.join('a','a') > > #m2.py > def f2(): > return string.join('b','b') > > #main.py > import string > import m1 > import m2 > > print f1() > print f2() > > --------- > > However it doesn't work until I import the string module into m1 and m2 > modules. I found in the manual that imported modules will be searched in > the container module first. Is it more efficient to import the string > module into main and m1 and m2 than importing only into m1 and m2? > > Mage > > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list