[Tutor] Newbie trying to understand modules and code reuse

RenderPipe renderpipe at speedpost.net
Thu Feb 5 17:39:40 EST 2004


Cool! Now I understand. I'll read up on that tutorial too.

Thanks to everyone for their helpful response.

Bobby


On Thu, 5 Feb 2004 22:23:31 -0000, "Alan Gauld"
<alan.gauld at blueyonder.co.uk> said:
> > I'm having a difficult time trying to understand modules
> > with python. I used to write php applications and am used
> > to including files
> 
> In Python you don't include files you import names.
> This is an important distinction.
> 
> > My problem is, I don't know how to write a module.
> > I have read the manuals and it just doesn't make sense yet.
> 
> OK, I dunno which bits you read but a module in Python is
> just a file full of python code. Lets call it mymodule.py
> 
> If you do
> 
> import mymodule
> 
> you make the name of the module available in your file.
> At the same time Python will execute the file and thus
> any function or class definitions will be executed and
> the functions and classes will be available for use.
> BUT their names will be inside the mymodule object.
> 
> To access anything inside the module you need to prepend
> it with the module object name:
> 
> mymodule.myfunction()
> 
> If the file name is long you might like to rename the module
> by importing it like this:
> 
> import mymodule as m
> 
> Now we can access the function like this:
> 
> m.myfunction()
> 
> The module object remains the same we have just given it a
> shorter name.
> 
> The other way to get at the contents of a module is to do this:
> 
> from mymodule import myfunction
> 
> This brings the name myfunction into your file but not the
> name mymodule nor any of the other names within mymodule.
> You can also "from mymodule import *" but that's usually
> a bad idea since it brings all the names from mymodule into
> your file, potentially overwriting some of them.
> 
> > Ultimately I'd like to create 2 "include files".
> 
> Two modules
> 
> > 1 will be a class file that I plan to reuse throughout my
> application
> 
> This is a good idea.
> 
> > 1 file will be a list of variables.
> 
> THis is an extremely bad idea. The whole idea of modules
> controlling names is to avoid global variables spilling
> over from one module to another. Its much better to keep
> the variables within the modules where they are needed.
> You can access them by prefixing with the parent module's
> name.
> 
> > I tried create a file and putting it in my /python/lib
> > directory and importing it. Surprisingly I was able to
> > import it but I was unable to access the variables or
> > methods in the file.
> 
> AS I described above you import the name of the module
> into your local namespace. You do not import the file itself.
> Thats why we "import mymodule" and not "mymodule.py"
> 
> > Perhaps I should use something else for code reuse?
> 
> You have the right idea but just need to adapt from
> the C/C++/PHP style of copy n paste include to the more
> theoretically sound importing of names.
> 
> You might like to read both the modules and namespaces topics
> in my tutorial.
> 
> Alan G
> Author of the Learn to Program web tutor
> http://www.freenetpages.co.uk/hp/alan.gauld
> 

-- 
http://www.fastmail.fm - Choose from over 50 domains or use your own



More information about the Tutor mailing list