[Python-Dev] PEP or formal description of Python module structure

Xavier Combelle xavier.combelle at free.fr
Mon Oct 15 14:15:02 CEST 2012


Le 15/10/2012 09:43, anatoly techtonik a écrit :
> Hi,
>
> I am trying to figure out what Python module is internally (WIP
> http://wiki.python.org/moin/techtonik)? Is there already a good piece
> of documentation that I missed that can answer all these questions
> already?
>
> ...what properties do you get in empty Python module (__doc__, __name__, ...)?
> ...what of those properties are set by the language standard
> (required) and what are just optional helpers from/for the
> interpreter?
> ...what is the proper way to inspect modules and access their
> properties at runtime?
> ...what optional properties are defined by language standard that can
> you set implicitly?
> ...how each internal property is used by the interpreter and when it appeared?
> ...what is the proper way to create module namespace at run-time?
>
> I'd like to see some kind of reference of properties with
> classification required/optional, purpose, when set, who uses, how to
> approach etc. in one place.
>
> --
> anatoly t.
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/xavier.combelle%40free.fr
from http://docs.python.org/reference/datamodel.html


Modules

    Modules are imported by the import
    <http://docs.python.org/reference/simple_stmts.html#import>
    statement (see section /The import statement/
    <http://docs.python.org/reference/simple_stmts.html#import>). A
    module object has a namespace implemented by a dictionary object
    (this is the dictionary referenced by the func_globals attribute of
    functions defined in the module). Attribute references are
    translated to lookups in this dictionary, e.g., m.x is equivalent to
    m.__dict__["x"]. A module object does not contain the code object
    used to initialize the module (since it isn't needed once the
    initialization is done).

    Attribute assignment updates the module's namespace dictionary,
    e.g., m.x = 1 is equivalent to m.__dict__["x"] = 1.

    Special read-only attribute: __dict__ is the module's namespace as a
    dictionary object.

    *CPython implementation detail:* Because of the way CPython clears
    module dictionaries, the module dictionary will be cleared when the
    module falls out of scope even if the dictionary still has live
    references. To avoid this, copy the dictionary or keep the module
    around while using its dictionary directly.

    Predefined (writable) attributes: __name__ is the module's name;
    __doc__ is the module's documentation string, or None if
    unavailable; __file__ is the pathname of the file from which the
    module was loaded, if it was loaded from a file. The __file__
    attribute is not present for C modules that are statically linked
    into the interpreter; for extension modules loaded dynamically from
    a shared library, it is the pathname of the shared library file.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20121015/dd187a6f/attachment.html>


More information about the Python-Dev mailing list