namespace confusion
Duncan Booth
duncan at NOSPAMrcp.co.uk
Wed Aug 8 09:23:26 EDT 2001
Mark Robinson <m.1.robinson at herts.ac.uk> wrote in
news:3B7135E2.40701 at herts.ac.uk:
> The problem I am having is I can't access the functfirst() from
> second.py. It makes no differce if I import it or not. What am I doing
> wrong or not doing that I should?
The example you posted has several mistakes, so it isn't immediately clear
which are mistyping and which might be your actual problem.
The spelling of functSecond/functCecond seems to vary, but this probably
isn't related to your query.
Your first.py contains a call to functfirst, but no actual definition.
Perhaps you cannot call the function because you haven't defined it?
Alternatively perhaps you have a different first.py that you failed to post
which really does define the function but has some other lines in it as
well. If it happens to try to 'import second' then this would also cause
the problem you have described, because the 'from first import *' in
second.py will be executed before first.py has created any variables to be
imported.
But I think the real problem is that you are using 'from module import *'.
This form of the import statement makes a copy of all the variables that
exist in another module at the time when the import is executed. This is
very rarely what you want. It is almost always better to just import the
module and access the values when you need them. So second.py becomes:
import first
def functSecond():
first.functfirst() #
and provided you actually define the function in first this call should
work.
--
Duncan Booth duncan at rcp.co.uk
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?
More information about the Python-list
mailing list