Module clarification

Brett Ritter swiftone at swiftone.org
Mon Jul 28 15:48:46 CEST 2008


On Jul 28, 4:54 am, Hussein B <hubaghd... at gmail.com> wrote:
> Hi.
> I'm a Java guy and I'm playing around Python these days...
> In Java, we organize our classes into packages and then jarring the
> packages into JAR files.
> What are modules in Python?
> What is the equivalent of modules in Java?

I'm new myself, coming from Perl and Java.  Take my comments with the
appropriate salt.

Here's my understanding:

1) JARs are a bit of a Java oddity.  The other languages I've worked
with don't really combine their packaging method for transport with
their packaging method of access.  Put another way, you may get a
zipfile or tarball of library files, but they aren't USED in that
format, they are just transported in that format.  You unzip them and
use the compiled libraries directly.  Java appears to be unusual
there.  I could be wrong (it's a big world), but such is my experience
in the C and Perl worlds.

2) Java also dictates a single class per file (basically).  Other
languages do not have that restriction which leads to different
collections.  A file in Python (a module) may have several classes, or
just one, or none.  A package in Python is a directory containing
modules (and possibly other packages) as well as a __init__.py file.
This means that you cannot have the Java case of two packages offering
the same fully qualified resource, because the namespace is tied to
the filesystem (note you can alter this when importing the packages).

3) Java uses "import" to create a shortcut to the namespace, a
convenience for the programmer that has little to no bearing on the
execution of the code.  Namespace is determined by the classloader.
Python uses "import" to declare how a namespace is used by the code
itself, which can be very significant, (For example, Java can access
any fully qualified package without an import statement.  Python
cannot access any package until it has been made available by import.)

Hope that helps and is remotely accurate.  I'm sure someone will
correct me if I'm wrong.



More information about the Python-list mailing list