modules
distrex
distrex at hotmail.com
Sun Apr 7 23:20:50 EDT 2002
jimd at vega.starshine.org (Jim Dennis) wrote in message news:<a8q9bi$2vka$1 at news.idiom.com>...
> In article <d9ea2696.0204061049.551bd53b at posting.google.com>, distrex wrote:
>
> >I understand most of python. But I still don't get modules. I know
> >they are just basicaly a function but i don't know how to use them
> >effectively and what each one does. Everything good in python you will
> >at some point need to use a module right. If anyone can help me with
> >this i'd be greatful. Info or websites would be nice.
>
> Modules are things that you import into your namespace. The
> process of import them (or import *from* them) executes any
> code in them. Usually (almost always) a module will only contain
> class and function definitions, perhaps some "members" (variables)
> and an "if __name__ == '__main__':" suite.
>
> You can think of a module as a library of classes, functions and
> variables. As such, it would be inappropriate to create modules
> that executed "visible" statements (such as printing stuff) or made
> other modifications to the importer's state. Basically modules
> should normally just execute whatever is necessary to define their
> namespace --- which usually requires NO "execution" (in the traditional
> sense) at all. (The confusion is that python is a dynamic language,
> so things like:
>
> def foo(): pass
> # and
> class Bar: pass
>
> ... are actually executable statements in Python, where they are
> "definitions" or "declarations" in other languages.
>
> The most important thing to realize about Python modules is that they
> are singletons. They are only executed upon initial import for any given
> interpreter session. Additional imports are not an error, and won't
> raise an exception, but they will not re-execute the module's code.
>
> That can be confusing because subsequent import statements can
> change change namespaces around. I can do something like:
>
> import bisect as bifoo
> from bisect import insort
> import bisect
>
> ... and I've only execute the contents of bisect once, but I've
> made subsequent changes to my namespace (making the bisect.insort()
> available directly available without any qualifiers (in my globals()
> dictionary). and making it accessible via the bifoo and bisect
> namespaces (which is silly, and used just for an example).
>
> You might be aware that there are three sorts of modules in
> Python. There are binaries (compiled code, usually from C sources)
> which appear as .so (shared object) files under Linux and UNIX, and
> .DLL files under MS Windows (don't know for Macs). There are Python
> files (simple .py files in python) and there are packages which
> are directories that contain __init__.py files with assignments to
> __all__ lists. You don't have to know or care about these differences
> among these when using the modules. You just use import the same way
> regardless of the underlying implementation details.
>
> While *writing* your own modules you can start a module as a .py
> and later refactor it into a package or rewrite it in C and compile
> as your needs require.
Don't take this the wrong way but I am a newbie and didn't understand
86% of what you just said. All I got was modules are classes functions
and variables. and a few other things but that was to complicated for
me (the newbie)
More information about the Python-list
mailing list