Home | History | Annotate | Download | only in tutorial
      1 .. _tut-modules:
      2 
      3 *******
      4 Modules
      5 *******
      6 
      7 If you quit from the Python interpreter and enter it again, the definitions you
      8 have made (functions and variables) are lost. Therefore, if you want to write a
      9 somewhat longer program, you are better off using a text editor to prepare the
     10 input for the interpreter and running it with that file as input instead.  This
     11 is known as creating a *script*.  As your program gets longer, you may want to
     12 split it into several files for easier maintenance.  You may also want to use a
     13 handy function that you've written in several programs without copying its
     14 definition into each program.
     15 
     16 To support this, Python has a way to put definitions in a file and use them in a
     17 script or in an interactive instance of the interpreter. Such a file is called a
     18 *module*; definitions from a module can be *imported* into other modules or into
     19 the *main* module (the collection of variables that you have access to in a
     20 script executed at the top level and in calculator mode).
     21 
     22 A module is a file containing Python definitions and statements.  The file name
     23 is the module name with the suffix :file:`.py` appended.  Within a module, the
     24 module's name (as a string) is available as the value of the global variable
     25 ``__name__``.  For instance, use your favorite text editor to create a file
     26 called :file:`fibo.py` in the current directory with the following contents::
     27 
     28    # Fibonacci numbers module
     29 
     30    def fib(n):    # write Fibonacci series up to n
     31        a, b = 0, 1
     32        while b < n:
     33            print b,
     34            a, b = b, a+b
     35 
     36    def fib2(n):   # return Fibonacci series up to n
     37        result = []
     38        a, b = 0, 1
     39        while b < n:
     40            result.append(b)
     41            a, b = b, a+b
     42        return result
     43 
     44 Now enter the Python interpreter and import this module with the following
     45 command::
     46 
     47    >>> import fibo
     48 
     49 This does not enter the names of the functions defined in ``fibo``  directly in
     50 the current symbol table; it only enters the module name ``fibo`` there. Using
     51 the module name you can access the functions::
     52 
     53    >>> fibo.fib(1000)
     54    1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
     55    >>> fibo.fib2(100)
     56    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
     57    >>> fibo.__name__
     58    'fibo'
     59 
     60 If you intend to use a function often you can assign it to a local name::
     61 
     62    >>> fib = fibo.fib
     63    >>> fib(500)
     64    1 1 2 3 5 8 13 21 34 55 89 144 233 377
     65 
     66 
     67 .. _tut-moremodules:
     68 
     69 More on Modules
     70 ===============
     71 
     72 A module can contain executable statements as well as function definitions.
     73 These statements are intended to initialize the module. They are executed only
     74 the *first* time the module name is encountered in an import statement. [#]_
     75 (They are also run if the file is executed as a script.)
     76 
     77 Each module has its own private symbol table, which is used as the global symbol
     78 table by all functions defined in the module. Thus, the author of a module can
     79 use global variables in the module without worrying about accidental clashes
     80 with a user's global variables. On the other hand, if you know what you are
     81 doing you can touch a module's global variables with the same notation used to
     82 refer to its functions, ``modname.itemname``.
     83 
     84 Modules can import other modules.  It is customary but not required to place all
     85 :keyword:`import` statements at the beginning of a module (or script, for that
     86 matter).  The imported module names are placed in the importing module's global
     87 symbol table.
     88 
     89 There is a variant of the :keyword:`import` statement that imports names from a
     90 module directly into the importing module's symbol table.  For example::
     91 
     92    >>> from fibo import fib, fib2
     93    >>> fib(500)
     94    1 1 2 3 5 8 13 21 34 55 89 144 233 377
     95 
     96 This does not introduce the module name from which the imports are taken in the
     97 local symbol table (so in the example, ``fibo`` is not defined).
     98 
     99 There is even a variant to import all names that a module defines::
    100 
    101    >>> from fibo import *
    102    >>> fib(500)
    103    1 1 2 3 5 8 13 21 34 55 89 144 233 377
    104 
    105 This imports all names except those beginning with an underscore (``_``).
    106 
    107 Note that in general the practice of importing ``*`` from a module or package is
    108 frowned upon, since it often causes poorly readable code. However, it is okay to
    109 use it to save typing in interactive sessions.
    110 
    111 .. note::
    112 
    113    For efficiency reasons, each module is only imported once per interpreter
    114    session.  Therefore, if you change your modules, you must restart the
    115    interpreter -- or, if it's just one module you want to test interactively,
    116    use :func:`reload`, e.g. ``reload(modulename)``.
    117 
    118 
    119 .. _tut-modulesasscripts:
    120 
    121 Executing modules as scripts
    122 ----------------------------
    123 
    124 When you run a Python module with ::
    125 
    126    python fibo.py <arguments>
    127 
    128 the code in the module will be executed, just as if you imported it, but with
    129 the ``__name__`` set to ``"__main__"``.  That means that by adding this code at
    130 the end of your module::
    131 
    132    if __name__ == "__main__":
    133        import sys
    134        fib(int(sys.argv[1]))
    135 
    136 you can make the file usable as a script as well as an importable module,
    137 because the code that parses the command line only runs if the module is
    138 executed as the "main" file:
    139 
    140 .. code-block:: shell-session
    141 
    142    $ python fibo.py 50
    143    1 1 2 3 5 8 13 21 34
    144 
    145 If the module is imported, the code is not run::
    146 
    147    >>> import fibo
    148    >>>
    149 
    150 This is often used either to provide a convenient user interface to a module, or
    151 for testing purposes (running the module as a script executes a test suite).
    152 
    153 
    154 .. _tut-searchpath:
    155 
    156 The Module Search Path
    157 ----------------------
    158 
    159 .. index:: triple: module; search; path
    160 
    161 When a module named :mod:`spam` is imported, the interpreter first searches for
    162 a built-in module with that name. If not found, it then searches for a file
    163 named :file:`spam.py` in a list of directories given by the variable
    164 :data:`sys.path`.  :data:`sys.path` is initialized from these locations:
    165 
    166 * the directory containing the input script (or the current directory).
    167 * :envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the
    168   shell variable :envvar:`PATH`).
    169 * the installation-dependent default.
    170 
    171 After initialization, Python programs can modify :data:`sys.path`.  The
    172 directory containing the script being run is placed at the beginning of the
    173 search path, ahead of the standard library path. This means that scripts in that
    174 directory will be loaded instead of modules of the same name in the library
    175 directory. This is an error unless the replacement is intended.  See section
    176 :ref:`tut-standardmodules` for more information.
    177 
    178 
    179 "Compiled" Python files
    180 -----------------------
    181 
    182 As an important speed-up of the start-up time for short programs that use a lot
    183 of standard modules, if a file called :file:`spam.pyc` exists in the directory
    184 where :file:`spam.py` is found, this is assumed to contain an
    185 already-"byte-compiled" version of the module :mod:`spam`. The modification time
    186 of the version of :file:`spam.py` used to create :file:`spam.pyc` is recorded in
    187 :file:`spam.pyc`, and the :file:`.pyc` file is ignored if these don't match.
    188 
    189 Normally, you don't need to do anything to create the :file:`spam.pyc` file.
    190 Whenever :file:`spam.py` is successfully compiled, an attempt is made to write
    191 the compiled version to :file:`spam.pyc`.  It is not an error if this attempt
    192 fails; if for any reason the file is not written completely, the resulting
    193 :file:`spam.pyc` file will be recognized as invalid and thus ignored later.  The
    194 contents of the :file:`spam.pyc` file are platform independent, so a Python
    195 module directory can be shared by machines of different architectures.
    196 
    197 Some tips for experts:
    198 
    199 * When the Python interpreter is invoked with the :option:`-O` flag, optimized
    200   code is generated and stored in :file:`.pyo` files.  The optimizer currently
    201   doesn't help much; it only removes :keyword:`assert` statements.  When
    202   :option:`-O` is used, *all* :term:`bytecode` is optimized; ``.pyc`` files are
    203   ignored and ``.py`` files are compiled to optimized bytecode.
    204 
    205 * Passing two :option:`-O` flags to the Python interpreter (:option:`-OO`) will
    206   cause the bytecode compiler to perform optimizations that could in some rare
    207   cases result in malfunctioning programs.  Currently only ``__doc__`` strings are
    208   removed from the bytecode, resulting in more compact :file:`.pyo` files.  Since
    209   some programs may rely on having these available, you should only use this
    210   option if you know what you're doing.
    211 
    212 * A program doesn't run any faster when it is read from a :file:`.pyc` or
    213   :file:`.pyo` file than when it is read from a :file:`.py` file; the only thing
    214   that's faster about :file:`.pyc` or :file:`.pyo` files is the speed with which
    215   they are loaded.
    216 
    217 * When a script is run by giving its name on the command line, the bytecode for
    218   the script is never written to a :file:`.pyc` or :file:`.pyo` file.  Thus, the
    219   startup time of a script may be reduced by moving most of its code to a module
    220   and having a small bootstrap script that imports that module.  It is also
    221   possible to name a :file:`.pyc` or :file:`.pyo` file directly on the command
    222   line.
    223 
    224 * It is possible to have a file called :file:`spam.pyc` (or :file:`spam.pyo`
    225   when :option:`-O` is used) without a file :file:`spam.py` for the same module.
    226   This can be used to distribute a library of Python code in a form that is
    227   moderately hard to reverse engineer.
    228 
    229   .. index:: module: compileall
    230 
    231 * The module :mod:`compileall` can create :file:`.pyc` files (or :file:`.pyo`
    232   files when :option:`-O` is used) for all modules in a directory.
    233 
    234 
    235 .. _tut-standardmodules:
    236 
    237 Standard Modules
    238 ================
    239 
    240 .. index:: module: sys
    241 
    242 Python comes with a library of standard modules, described in a separate
    243 document, the Python Library Reference ("Library Reference" hereafter).  Some
    244 modules are built into the interpreter; these provide access to operations that
    245 are not part of the core of the language but are nevertheless built in, either
    246 for efficiency or to provide access to operating system primitives such as
    247 system calls.  The set of such modules is a configuration option which also
    248 depends on the underlying platform.  For example, the :mod:`winreg` module is only
    249 provided on Windows systems. One particular module deserves some attention:
    250 :mod:`sys`, which is built into every Python interpreter.  The variables
    251 ``sys.ps1`` and ``sys.ps2`` define the strings used as primary and secondary
    252 prompts::
    253 
    254    >>> import sys
    255    >>> sys.ps1
    256    '>>> '
    257    >>> sys.ps2
    258    '... '
    259    >>> sys.ps1 = 'C> '
    260    C> print 'Yuck!'
    261    Yuck!
    262    C>
    263 
    264 
    265 These two variables are only defined if the interpreter is in interactive mode.
    266 
    267 The variable ``sys.path`` is a list of strings that determines the interpreter's
    268 search path for modules. It is initialized to a default path taken from the
    269 environment variable :envvar:`PYTHONPATH`, or from a built-in default if
    270 :envvar:`PYTHONPATH` is not set.  You can modify it using standard list
    271 operations::
    272 
    273    >>> import sys
    274    >>> sys.path.append('/ufs/guido/lib/python')
    275 
    276 
    277 .. _tut-dir:
    278 
    279 The :func:`dir` Function
    280 ========================
    281 
    282 The built-in function :func:`dir` is used to find out which names a module
    283 defines.  It returns a sorted list of strings::
    284 
    285    >>> import fibo, sys
    286    >>> dir(fibo)
    287    ['__name__', 'fib', 'fib2']
    288    >>> dir(sys)  # doctest: +NORMALIZE_WHITESPACE
    289    ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__',
    290     '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache',
    291     '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv',
    292     'builtin_module_names', 'byteorder', 'call_tracing', 'callstats',
    293     'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info',
    294     'exc_traceback', 'exc_type', 'exc_value', 'excepthook', 'exec_prefix',
    295     'executable', 'exit', 'flags', 'float_info', 'float_repr_style',
    296     'getcheckinterval', 'getdefaultencoding', 'getdlopenflags',
    297     'getfilesystemencoding', 'getobjects', 'getprofile', 'getrecursionlimit',
    298     'getrefcount', 'getsizeof', 'gettotalrefcount', 'gettrace', 'hexversion',
    299     'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules',
    300     'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1',
    301     'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile',
    302     'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion',
    303     'version', 'version_info', 'warnoptions']
    304 
    305 Without arguments, :func:`dir` lists the names you have defined currently::
    306 
    307    >>> a = [1, 2, 3, 4, 5]
    308    >>> import fibo
    309    >>> fib = fibo.fib
    310    >>> dir()
    311    ['__builtins__', '__name__', '__package__', 'a', 'fib', 'fibo', 'sys']
    312 
    313 Note that it lists all types of names: variables, modules, functions, etc.
    314 
    315 .. index:: module: __builtin__
    316 
    317 :func:`dir` does not list the names of built-in functions and variables.  If you
    318 want a list of those, they are defined in the standard module
    319 :mod:`__builtin__`::
    320 
    321    >>> import __builtin__
    322    >>> dir(__builtin__)  # doctest: +NORMALIZE_WHITESPACE
    323    ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException',
    324     'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError',
    325     'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError',
    326     'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning',
    327     'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt',
    328     'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented',
    329     'NotImplementedError', 'OSError', 'OverflowError',
    330     'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError',
    331     'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError',
    332     'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True',
    333     'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
    334     'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
    335     'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning',
    336     'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__',
    337     '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring',
    338     'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr',
    339     'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright',
    340     'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval',
    341     'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset',
    342     'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input',
    343     'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license',
    344     'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next',
    345     'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit',
    346     'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round',
    347     'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super',
    348     'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']
    349 
    350 
    351 .. _tut-packages:
    352 
    353 Packages
    354 ========
    355 
    356 Packages are a way of structuring Python's module namespace by using "dotted
    357 module names".  For example, the module name :mod:`A.B` designates a submodule
    358 named ``B`` in a package named ``A``.  Just like the use of modules saves the
    359 authors of different modules from having to worry about each other's global
    360 variable names, the use of dotted module names saves the authors of multi-module
    361 packages like NumPy or the Python Imaging Library from having to worry about
    362 each other's module names.
    363 
    364 Suppose you want to design a collection of modules (a "package") for the uniform
    365 handling of sound files and sound data.  There are many different sound file
    366 formats (usually recognized by their extension, for example: :file:`.wav`,
    367 :file:`.aiff`, :file:`.au`), so you may need to create and maintain a growing
    368 collection of modules for the conversion between the various file formats.
    369 There are also many different operations you might want to perform on sound data
    370 (such as mixing, adding echo, applying an equalizer function, creating an
    371 artificial stereo effect), so in addition you will be writing a never-ending
    372 stream of modules to perform these operations.  Here's a possible structure for
    373 your package (expressed in terms of a hierarchical filesystem):
    374 
    375 .. code-block:: text
    376 
    377    sound/                          Top-level package
    378          __init__.py               Initialize the sound package
    379          formats/                  Subpackage for file format conversions
    380                  __init__.py
    381                  wavread.py
    382                  wavwrite.py
    383                  aiffread.py
    384                  aiffwrite.py
    385                  auread.py
    386                  auwrite.py
    387                  ...
    388          effects/                  Subpackage for sound effects
    389                  __init__.py
    390                  echo.py
    391                  surround.py
    392                  reverse.py
    393                  ...
    394          filters/                  Subpackage for filters
    395                  __init__.py
    396                  equalizer.py
    397                  vocoder.py
    398                  karaoke.py
    399                  ...
    400 
    401 When importing the package, Python searches through the directories on
    402 ``sys.path`` looking for the package subdirectory.
    403 
    404 The :file:`__init__.py` files are required to make Python treat the directories
    405 as containing packages; this is done to prevent directories with a common name,
    406 such as ``string``, from unintentionally hiding valid modules that occur later
    407 on the module search path. In the simplest case, :file:`__init__.py` can just be
    408 an empty file, but it can also execute initialization code for the package or
    409 set the ``__all__`` variable, described later.
    410 
    411 Users of the package can import individual modules from the package, for
    412 example::
    413 
    414    import sound.effects.echo
    415 
    416 This loads the submodule :mod:`sound.effects.echo`.  It must be referenced with
    417 its full name. ::
    418 
    419    sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
    420 
    421 An alternative way of importing the submodule is::
    422 
    423    from sound.effects import echo
    424 
    425 This also loads the submodule :mod:`echo`, and makes it available without its
    426 package prefix, so it can be used as follows::
    427 
    428    echo.echofilter(input, output, delay=0.7, atten=4)
    429 
    430 Yet another variation is to import the desired function or variable directly::
    431 
    432    from sound.effects.echo import echofilter
    433 
    434 Again, this loads the submodule :mod:`echo`, but this makes its function
    435 :func:`echofilter` directly available::
    436 
    437    echofilter(input, output, delay=0.7, atten=4)
    438 
    439 Note that when using ``from package import item``, the item can be either a
    440 submodule (or subpackage) of the package, or some  other name defined in the
    441 package, like a function, class or variable.  The ``import`` statement first
    442 tests whether the item is defined in the package; if not, it assumes it is a
    443 module and attempts to load it.  If it fails to find it, an :exc:`ImportError`
    444 exception is raised.
    445 
    446 Contrarily, when using syntax like ``import item.subitem.subsubitem``, each item
    447 except for the last must be a package; the last item can be a module or a
    448 package but can't be a class or function or variable defined in the previous
    449 item.
    450 
    451 
    452 .. _tut-pkg-import-star:
    453 
    454 Importing \* From a Package
    455 ---------------------------
    456 
    457 .. index:: single: __all__
    458 
    459 Now what happens when the user writes ``from sound.effects import *``?  Ideally,
    460 one would hope that this somehow goes out to the filesystem, finds which
    461 submodules are present in the package, and imports them all.  This could take a
    462 long time and importing sub-modules might have unwanted side-effects that should
    463 only happen when the sub-module is explicitly imported.
    464 
    465 The only solution is for the package author to provide an explicit index of the
    466 package.  The :keyword:`import` statement uses the following convention: if a package's
    467 :file:`__init__.py` code defines a list named ``__all__``, it is taken to be the
    468 list of module names that should be imported when ``from package import *`` is
    469 encountered.  It is up to the package author to keep this list up-to-date when a
    470 new version of the package is released.  Package authors may also decide not to
    471 support it, if they don't see a use for importing \* from their package.  For
    472 example, the file :file:`sound/effects/__init__.py` could contain the following
    473 code::
    474 
    475    __all__ = ["echo", "surround", "reverse"]
    476 
    477 This would mean that ``from sound.effects import *`` would import the three
    478 named submodules of the :mod:`sound` package.
    479 
    480 If ``__all__`` is not defined, the statement ``from sound.effects import *``
    481 does *not* import all submodules from the package :mod:`sound.effects` into the
    482 current namespace; it only ensures that the package :mod:`sound.effects` has
    483 been imported (possibly running any initialization code in :file:`__init__.py`)
    484 and then imports whatever names are defined in the package.  This includes any
    485 names defined (and submodules explicitly loaded) by :file:`__init__.py`.  It
    486 also includes any submodules of the package that were explicitly loaded by
    487 previous :keyword:`import` statements.  Consider this code::
    488 
    489    import sound.effects.echo
    490    import sound.effects.surround
    491    from sound.effects import *
    492 
    493 In this example, the :mod:`echo` and :mod:`surround` modules are imported in the
    494 current namespace because they are defined in the :mod:`sound.effects` package
    495 when the ``from...import`` statement is executed.  (This also works when
    496 ``__all__`` is defined.)
    497 
    498 Although certain modules are designed to export only names that follow certain
    499 patterns when you use ``import *``, it is still considered bad practice in
    500 production code.
    501 
    502 Remember, there is nothing wrong with using ``from Package import
    503 specific_submodule``!  In fact, this is the recommended notation unless the
    504 importing module needs to use submodules with the same name from different
    505 packages.
    506 
    507 
    508 Intra-package References
    509 ------------------------
    510 
    511 The submodules often need to refer to each other.  For example, the
    512 :mod:`surround` module might use the :mod:`echo` module.  In fact, such
    513 references are so common that the :keyword:`import` statement first looks in the
    514 containing package before looking in the standard module search path. Thus, the
    515 :mod:`surround` module can simply use ``import echo`` or ``from echo import
    516 echofilter``.  If the imported module is not found in the current package (the
    517 package of which the current module is a submodule), the :keyword:`import`
    518 statement looks for a top-level module with the given name.
    519 
    520 When packages are structured into subpackages (as with the :mod:`sound` package
    521 in the example), you can use absolute imports to refer to submodules of siblings
    522 packages.  For example, if the module :mod:`sound.filters.vocoder` needs to use
    523 the :mod:`echo` module in the :mod:`sound.effects` package, it can use ``from
    524 sound.effects import echo``.
    525 
    526 Starting with Python 2.5, in addition to the implicit relative imports described
    527 above, you can write explicit relative imports with the ``from module import
    528 name`` form of import statement. These explicit relative imports use leading
    529 dots to indicate the current and parent packages involved in the relative
    530 import. From the :mod:`surround` module for example, you might use::
    531 
    532    from . import echo
    533    from .. import formats
    534    from ..filters import equalizer
    535 
    536 Note that both explicit and implicit relative imports are based on the name of
    537 the current module. Since the name of the main module is always ``"__main__"``,
    538 modules intended for use as the main module of a Python application should
    539 always use absolute imports.
    540 
    541 
    542 Packages in Multiple Directories
    543 --------------------------------
    544 
    545 Packages support one more special attribute, :attr:`__path__`.  This is
    546 initialized to be a list containing the name of the directory holding the
    547 package's :file:`__init__.py` before the code in that file is executed.  This
    548 variable can be modified; doing so affects future searches for modules and
    549 subpackages contained in the package.
    550 
    551 While this feature is not often needed, it can be used to extend the set of
    552 modules found in a package.
    553 
    554 
    555 .. rubric:: Footnotes
    556 
    557 .. [#] In fact function definitions are also 'statements' that are 'executed'; the
    558    execution of a module-level function definition enters the function name in
    559    the module's global symbol table.
    560 
    561