Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 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 |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 32 | while a < n: |
| 33 | print(a, end=' ') |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 34 | a, b = b, a+b |
Georg Brandl | 11e18b0 | 2008-08-05 09:04:16 +0000 | [diff] [blame] | 35 | print() |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 36 | |
Serhiy Storchaka | dba9039 | 2016-05-10 12:01:23 +0300 | [diff] [blame] | 37 | def fib2(n): # return Fibonacci series up to n |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 38 | result = [] |
| 39 | a, b = 0, 1 |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 40 | while a < n: |
| 41 | result.append(a) |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 42 | a, b = b, a+b |
| 43 | return result |
| 44 | |
| 45 | Now enter the Python interpreter and import this module with the following |
| 46 | command:: |
| 47 | |
| 48 | >>> import fibo |
| 49 | |
| 50 | This does not enter the names of the functions defined in ``fibo`` directly in |
| 51 | the current symbol table; it only enters the module name ``fibo`` there. Using |
| 52 | the module name you can access the functions:: |
| 53 | |
| 54 | >>> fibo.fib(1000) |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 55 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 56 | >>> fibo.fib2(100) |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 57 | [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 58 | >>> fibo.__name__ |
| 59 | 'fibo' |
| 60 | |
| 61 | If you intend to use a function often you can assign it to a local name:: |
| 62 | |
| 63 | >>> fib = fibo.fib |
| 64 | >>> fib(500) |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 65 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 66 | |
| 67 | |
| 68 | .. _tut-moremodules: |
| 69 | |
| 70 | More on Modules |
| 71 | =============== |
| 72 | |
| 73 | A module can contain executable statements as well as function definitions. |
| 74 | These statements are intended to initialize the module. They are executed only |
R David Murray | 25187e6 | 2013-04-21 16:58:36 -0400 | [diff] [blame] | 75 | the *first* time the module name is encountered in an import statement. [#]_ |
| 76 | (They are also run if the file is executed as a script.) |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 77 | |
| 78 | Each module has its own private symbol table, which is used as the global symbol |
| 79 | table by all functions defined in the module. Thus, the author of a module can |
| 80 | use global variables in the module without worrying about accidental clashes |
| 81 | with a user's global variables. On the other hand, if you know what you are |
| 82 | doing you can touch a module's global variables with the same notation used to |
| 83 | refer to its functions, ``modname.itemname``. |
| 84 | |
| 85 | Modules can import other modules. It is customary but not required to place all |
| 86 | :keyword:`import` statements at the beginning of a module (or script, for that |
| 87 | matter). The imported module names are placed in the importing module's global |
| 88 | symbol table. |
| 89 | |
| 90 | There is a variant of the :keyword:`import` statement that imports names from a |
| 91 | module directly into the importing module's symbol table. For example:: |
| 92 | |
| 93 | >>> from fibo import fib, fib2 |
| 94 | >>> fib(500) |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 95 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 96 | |
| 97 | This does not introduce the module name from which the imports are taken in the |
| 98 | local symbol table (so in the example, ``fibo`` is not defined). |
| 99 | |
| 100 | There is even a variant to import all names that a module defines:: |
| 101 | |
| 102 | >>> from fibo import * |
| 103 | >>> fib(500) |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 104 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 105 | |
| 106 | This imports all names except those beginning with an underscore (``_``). |
Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 107 | In most cases Python programmers do not use this facility since it introduces |
| 108 | an unknown set of names into the interpreter, possibly hiding some things |
Guido van Rossum | 0616b79 | 2007-08-31 03:25:11 +0000 | [diff] [blame] | 109 | you have already defined. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 110 | |
Benjamin Peterson | 4ac9ce4 | 2009-10-04 14:49:41 +0000 | [diff] [blame] | 111 | Note that in general the practice of importing ``*`` from a module or package is |
| 112 | frowned upon, since it often causes poorly readable code. However, it is okay to |
| 113 | use it to save typing in interactive sessions. |
| 114 | |
Serhiy Storchaka | 2b57c43 | 2018-12-19 08:09:46 +0200 | [diff] [blame] | 115 | If the module name is followed by :keyword:`!as`, then the name |
| 116 | following :keyword:`!as` is bound directly to the imported module. |
Mario Corchero | fbee882 | 2018-02-25 19:11:12 +0000 | [diff] [blame] | 117 | |
| 118 | :: |
| 119 | |
| 120 | >>> import fibo as fib |
| 121 | >>> fib.fib(500) |
| 122 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 |
| 123 | |
| 124 | This is effectively importing the module in the same way that ``import fibo`` |
| 125 | will do, with the only difference of it being available as ``fib``. |
| 126 | |
| 127 | It can also be used when utilising :keyword:`from` with similar effects:: |
| 128 | |
| 129 | >>> from fibo import fib as fibonacci |
| 130 | >>> fibonacci(500) |
| 131 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 |
| 132 | |
| 133 | |
Alexandre Vassalotti | 6461e10 | 2008-05-15 22:09:29 +0000 | [diff] [blame] | 134 | .. note:: |
| 135 | |
| 136 | For efficiency reasons, each module is only imported once per interpreter |
| 137 | session. Therefore, if you change your modules, you must restart the |
| 138 | interpreter -- or, if it's just one module you want to test interactively, |
Senthil Kumaran | 80538e9 | 2016-01-16 18:43:24 -0800 | [diff] [blame] | 139 | use :func:`importlib.reload`, e.g. ``import importlib; |
| 140 | importlib.reload(modulename)``. |
Alexandre Vassalotti | 6461e10 | 2008-05-15 22:09:29 +0000 | [diff] [blame] | 141 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 142 | |
| 143 | .. _tut-modulesasscripts: |
| 144 | |
| 145 | Executing modules as scripts |
| 146 | ---------------------------- |
| 147 | |
| 148 | When you run a Python module with :: |
| 149 | |
| 150 | python fibo.py <arguments> |
| 151 | |
| 152 | the code in the module will be executed, just as if you imported it, but with |
| 153 | the ``__name__`` set to ``"__main__"``. That means that by adding this code at |
| 154 | the end of your module:: |
| 155 | |
| 156 | if __name__ == "__main__": |
| 157 | import sys |
| 158 | fib(int(sys.argv[1])) |
| 159 | |
| 160 | you can make the file usable as a script as well as an importable module, |
| 161 | because the code that parses the command line only runs if the module is |
Martin Panter | 1050d2d | 2016-07-26 11:18:21 +0200 | [diff] [blame] | 162 | executed as the "main" file: |
| 163 | |
| 164 | .. code-block:: shell-session |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 165 | |
| 166 | $ python fibo.py 50 |
Raymond Hettinger | 8c26a34 | 2017-10-14 07:36:08 -0700 | [diff] [blame] | 167 | 0 1 1 2 3 5 8 13 21 34 |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 168 | |
| 169 | If the module is imported, the code is not run:: |
| 170 | |
| 171 | >>> import fibo |
| 172 | >>> |
| 173 | |
| 174 | This is often used either to provide a convenient user interface to a module, or |
| 175 | for testing purposes (running the module as a script executes a test suite). |
| 176 | |
| 177 | |
| 178 | .. _tut-searchpath: |
| 179 | |
| 180 | The Module Search Path |
| 181 | ---------------------- |
| 182 | |
| 183 | .. index:: triple: module; search; path |
| 184 | |
Sandro Tosi | f0229aa | 2012-01-19 11:29:26 +0100 | [diff] [blame] | 185 | When a module named :mod:`spam` is imported, the interpreter first searches for |
| 186 | a built-in module with that name. If not found, it then searches for a file |
| 187 | named :file:`spam.py` in a list of directories given by the variable |
| 188 | :data:`sys.path`. :data:`sys.path` is initialized from these locations: |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 189 | |
Brett Cannon | f811bbf | 2014-02-06 09:22:51 -0500 | [diff] [blame] | 190 | * The directory containing the input script (or the current directory when no |
| 191 | file is specified). |
Sandro Tosi | f0229aa | 2012-01-19 11:29:26 +0100 | [diff] [blame] | 192 | * :envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the |
| 193 | shell variable :envvar:`PATH`). |
Brett Cannon | f811bbf | 2014-02-06 09:22:51 -0500 | [diff] [blame] | 194 | * The installation-dependent default. |
| 195 | |
| 196 | .. note:: |
| 197 | On file systems which support symlinks, the directory containing the input |
| 198 | script is calculated after the symlink is followed. In other words the |
| 199 | directory containing the symlink is **not** added to the module search path. |
Sandro Tosi | f0229aa | 2012-01-19 11:29:26 +0100 | [diff] [blame] | 200 | |
| 201 | After initialization, Python programs can modify :data:`sys.path`. The |
| 202 | directory containing the script being run is placed at the beginning of the |
| 203 | search path, ahead of the standard library path. This means that scripts in that |
| 204 | directory will be loaded instead of modules of the same name in the library |
| 205 | directory. This is an error unless the replacement is intended. See section |
| 206 | :ref:`tut-standardmodules` for more information. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 207 | |
Guido van Rossum | 0616b79 | 2007-08-31 03:25:11 +0000 | [diff] [blame] | 208 | .. % |
| 209 | Do we need stuff on zip files etc. ? DUBOIS |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 210 | |
| 211 | "Compiled" Python files |
| 212 | ----------------------- |
| 213 | |
Georg Brandl | 5db7c54 | 2013-10-12 19:13:23 +0200 | [diff] [blame] | 214 | To speed up loading modules, Python caches the compiled version of each module |
Georg Brandl | 325a1c2 | 2013-10-27 09:16:01 +0100 | [diff] [blame] | 215 | in the ``__pycache__`` directory under the name :file:`module.{version}.pyc`, |
Georg Brandl | 5db7c54 | 2013-10-12 19:13:23 +0200 | [diff] [blame] | 216 | where the version encodes the format of the compiled file; it generally contains |
| 217 | the Python version number. For example, in CPython release 3.3 the compiled |
| 218 | version of spam.py would be cached as ``__pycache__/spam.cpython-33.pyc``. This |
| 219 | naming convention allows compiled modules from different releases and different |
| 220 | versions of Python to coexist. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 221 | |
Georg Brandl | 5db7c54 | 2013-10-12 19:13:23 +0200 | [diff] [blame] | 222 | Python checks the modification date of the source against the compiled version |
| 223 | to see if it's out of date and needs to be recompiled. This is a completely |
| 224 | automatic process. Also, the compiled modules are platform-independent, so the |
| 225 | same library can be shared among systems with different architectures. |
| 226 | |
| 227 | Python does not check the cache in two circumstances. First, it always |
| 228 | recompiles and does not store the result for the module that's loaded directly |
| 229 | from the command line. Second, it does not check the cache if there is no |
| 230 | source module. To support a non-source (compiled only) distribution, the |
| 231 | compiled module must be in the source directory, and there must not be a source |
| 232 | module. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 233 | |
| 234 | Some tips for experts: |
| 235 | |
Georg Brandl | 5db7c54 | 2013-10-12 19:13:23 +0200 | [diff] [blame] | 236 | * You can use the :option:`-O` or :option:`-OO` switches on the Python command |
| 237 | to reduce the size of a compiled module. The ``-O`` switch removes assert |
| 238 | statements, the ``-OO`` switch removes both assert statements and __doc__ |
| 239 | strings. Since some programs may rely on having these available, you should |
| 240 | only use this option if you know what you're doing. "Optimized" modules have |
Brett Cannon | f299abd | 2015-04-13 14:21:02 -0400 | [diff] [blame] | 241 | an ``opt-`` tag and are usually smaller. Future releases may |
Georg Brandl | 5db7c54 | 2013-10-12 19:13:23 +0200 | [diff] [blame] | 242 | change the effects of optimization. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 243 | |
Brett Cannon | f299abd | 2015-04-13 14:21:02 -0400 | [diff] [blame] | 244 | * A program doesn't run any faster when it is read from a ``.pyc`` |
Georg Brandl | 5db7c54 | 2013-10-12 19:13:23 +0200 | [diff] [blame] | 245 | file than when it is read from a ``.py`` file; the only thing that's faster |
Brett Cannon | f299abd | 2015-04-13 14:21:02 -0400 | [diff] [blame] | 246 | about ``.pyc`` files is the speed with which they are loaded. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 247 | |
Brett Cannon | f299abd | 2015-04-13 14:21:02 -0400 | [diff] [blame] | 248 | * The module :mod:`compileall` can create .pyc files for all modules in a |
| 249 | directory. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 250 | |
Georg Brandl | 5db7c54 | 2013-10-12 19:13:23 +0200 | [diff] [blame] | 251 | * There is more detail on this process, including a flow chart of the |
Behzad B. Mokhtari | df748c2 | 2018-06-27 08:27:39 +0430 | [diff] [blame] | 252 | decisions, in :pep:`3147`. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 253 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 254 | |
| 255 | .. _tut-standardmodules: |
| 256 | |
| 257 | Standard Modules |
| 258 | ================ |
| 259 | |
| 260 | .. index:: module: sys |
| 261 | |
| 262 | Python comes with a library of standard modules, described in a separate |
| 263 | document, the Python Library Reference ("Library Reference" hereafter). Some |
| 264 | modules are built into the interpreter; these provide access to operations that |
| 265 | are not part of the core of the language but are nevertheless built in, either |
| 266 | for efficiency or to provide access to operating system primitives such as |
| 267 | system calls. The set of such modules is a configuration option which also |
Sandro Tosi | da9df92 | 2012-08-04 19:42:24 +0200 | [diff] [blame] | 268 | depends on the underlying platform. For example, the :mod:`winreg` module is only |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 269 | provided on Windows systems. One particular module deserves some attention: |
| 270 | :mod:`sys`, which is built into every Python interpreter. The variables |
| 271 | ``sys.ps1`` and ``sys.ps2`` define the strings used as primary and secondary |
Christian Heimes | 5b5e81c | 2007-12-31 16:14:33 +0000 | [diff] [blame] | 272 | prompts:: |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 273 | |
| 274 | >>> import sys |
| 275 | >>> sys.ps1 |
| 276 | '>>> ' |
| 277 | >>> sys.ps2 |
| 278 | '... ' |
| 279 | >>> sys.ps1 = 'C> ' |
Guido van Rossum | 0616b79 | 2007-08-31 03:25:11 +0000 | [diff] [blame] | 280 | C> print('Yuck!') |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 281 | Yuck! |
| 282 | C> |
| 283 | |
| 284 | |
| 285 | These two variables are only defined if the interpreter is in interactive mode. |
| 286 | |
| 287 | The variable ``sys.path`` is a list of strings that determines the interpreter's |
| 288 | search path for modules. It is initialized to a default path taken from the |
| 289 | environment variable :envvar:`PYTHONPATH`, or from a built-in default if |
| 290 | :envvar:`PYTHONPATH` is not set. You can modify it using standard list |
| 291 | operations:: |
| 292 | |
| 293 | >>> import sys |
| 294 | >>> sys.path.append('/ufs/guido/lib/python') |
| 295 | |
| 296 | |
| 297 | .. _tut-dir: |
| 298 | |
| 299 | The :func:`dir` Function |
| 300 | ======================== |
| 301 | |
| 302 | The built-in function :func:`dir` is used to find out which names a module |
| 303 | defines. It returns a sorted list of strings:: |
| 304 | |
| 305 | >>> import fibo, sys |
| 306 | >>> dir(fibo) |
| 307 | ['__name__', 'fib', 'fib2'] |
Ezio Melotti | 52e8550 | 2012-11-17 12:50:14 +0200 | [diff] [blame] | 308 | >>> dir(sys) # doctest: +NORMALIZE_WHITESPACE |
Ezio Melotti | ac6ca3d | 2012-11-17 12:56:29 +0200 | [diff] [blame] | 309 | ['__displayhook__', '__doc__', '__excepthook__', '__loader__', '__name__', |
| 310 | '__package__', '__stderr__', '__stdin__', '__stdout__', |
| 311 | '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe', |
| 312 | '_home', '_mercurial', '_xoptions', 'abiflags', 'api_version', 'argv', |
| 313 | 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', |
| 314 | 'call_tracing', 'callstats', 'copyright', 'displayhook', |
| 315 | 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', |
| 316 | 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', |
| 317 | 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', |
| 318 | 'getfilesystemencoding', 'getobjects', 'getprofile', 'getrecursionlimit', |
| 319 | 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettotalrefcount', |
| 320 | 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info', |
| 321 | 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', |
| 322 | 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', |
| 323 | 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', |
| 324 | 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', |
| 325 | 'thread_info', 'version', 'version_info', 'warnoptions'] |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 326 | |
| 327 | Without arguments, :func:`dir` lists the names you have defined currently:: |
| 328 | |
| 329 | >>> a = [1, 2, 3, 4, 5] |
| 330 | >>> import fibo |
| 331 | >>> fib = fibo.fib |
| 332 | >>> dir() |
Ezio Melotti | 52e8550 | 2012-11-17 12:50:14 +0200 | [diff] [blame] | 333 | ['__builtins__', '__name__', 'a', 'fib', 'fibo', 'sys'] |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 334 | |
| 335 | Note that it lists all types of names: variables, modules, functions, etc. |
| 336 | |
Georg Brandl | 1a3284e | 2007-12-02 09:40:06 +0000 | [diff] [blame] | 337 | .. index:: module: builtins |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 338 | |
| 339 | :func:`dir` does not list the names of built-in functions and variables. If you |
| 340 | want a list of those, they are defined in the standard module |
Georg Brandl | 1a3284e | 2007-12-02 09:40:06 +0000 | [diff] [blame] | 341 | :mod:`builtins`:: |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 342 | |
Georg Brandl | 1a3284e | 2007-12-02 09:40:06 +0000 | [diff] [blame] | 343 | >>> import builtins |
Ezio Melotti | 52e8550 | 2012-11-17 12:50:14 +0200 | [diff] [blame] | 344 | >>> dir(builtins) # doctest: +NORMALIZE_WHITESPACE |
| 345 | ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', |
Ezio Melotti | 4a42ec5 | 2012-11-17 12:54:45 +0200 | [diff] [blame] | 346 | 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', |
| 347 | 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', |
| 348 | 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', |
| 349 | 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', |
| 350 | 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', |
Ezio Melotti | 52e8550 | 2012-11-17 12:50:14 +0200 | [diff] [blame] | 351 | 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', |
Ezio Melotti | 4a42ec5 | 2012-11-17 12:54:45 +0200 | [diff] [blame] | 352 | 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', |
| 353 | 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', |
| 354 | 'MemoryError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', |
| 355 | 'NotImplementedError', 'OSError', 'OverflowError', |
| 356 | 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', |
| 357 | 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', |
| 358 | 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', |
| 359 | 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', |
| 360 | 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', |
| 361 | 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', |
| 362 | 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__build_class__', |
| 363 | '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', |
| 364 | 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', |
| 365 | 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', |
| 366 | 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', |
| 367 | 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', |
| 368 | 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', |
| 369 | 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', |
| 370 | 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', |
| 371 | 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', |
| 372 | 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', |
| 373 | 'zip'] |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 374 | |
| 375 | .. _tut-packages: |
| 376 | |
| 377 | Packages |
| 378 | ======== |
| 379 | |
| 380 | Packages are a way of structuring Python's module namespace by using "dotted |
| 381 | module names". For example, the module name :mod:`A.B` designates a submodule |
| 382 | named ``B`` in a package named ``A``. Just like the use of modules saves the |
| 383 | authors of different modules from having to worry about each other's global |
| 384 | variable names, the use of dotted module names saves the authors of multi-module |
Andrés Delfino | b81ca28 | 2018-04-21 09:17:26 -0300 | [diff] [blame] | 385 | packages like NumPy or Pillow from having to worry about |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 386 | each other's module names. |
| 387 | |
| 388 | Suppose you want to design a collection of modules (a "package") for the uniform |
| 389 | handling of sound files and sound data. There are many different sound file |
| 390 | formats (usually recognized by their extension, for example: :file:`.wav`, |
| 391 | :file:`.aiff`, :file:`.au`), so you may need to create and maintain a growing |
| 392 | collection of modules for the conversion between the various file formats. |
| 393 | There are also many different operations you might want to perform on sound data |
| 394 | (such as mixing, adding echo, applying an equalizer function, creating an |
| 395 | artificial stereo effect), so in addition you will be writing a never-ending |
| 396 | stream of modules to perform these operations. Here's a possible structure for |
Georg Brandl | 22a1fd7 | 2013-10-06 11:08:24 +0200 | [diff] [blame] | 397 | your package (expressed in terms of a hierarchical filesystem): |
| 398 | |
| 399 | .. code-block:: text |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 400 | |
| 401 | sound/ Top-level package |
| 402 | __init__.py Initialize the sound package |
| 403 | formats/ Subpackage for file format conversions |
| 404 | __init__.py |
| 405 | wavread.py |
| 406 | wavwrite.py |
| 407 | aiffread.py |
| 408 | aiffwrite.py |
| 409 | auread.py |
| 410 | auwrite.py |
| 411 | ... |
| 412 | effects/ Subpackage for sound effects |
| 413 | __init__.py |
| 414 | echo.py |
| 415 | surround.py |
| 416 | reverse.py |
| 417 | ... |
| 418 | filters/ Subpackage for filters |
| 419 | __init__.py |
| 420 | equalizer.py |
| 421 | vocoder.py |
| 422 | karaoke.py |
| 423 | ... |
| 424 | |
| 425 | When importing the package, Python searches through the directories on |
| 426 | ``sys.path`` looking for the package subdirectory. |
| 427 | |
| 428 | The :file:`__init__.py` files are required to make Python treat the directories |
| 429 | as containing packages; this is done to prevent directories with a common name, |
| 430 | such as ``string``, from unintentionally hiding valid modules that occur later |
| 431 | on the module search path. In the simplest case, :file:`__init__.py` can just be |
| 432 | an empty file, but it can also execute initialization code for the package or |
| 433 | set the ``__all__`` variable, described later. |
| 434 | |
| 435 | Users of the package can import individual modules from the package, for |
| 436 | example:: |
| 437 | |
| 438 | import sound.effects.echo |
| 439 | |
| 440 | This loads the submodule :mod:`sound.effects.echo`. It must be referenced with |
| 441 | its full name. :: |
| 442 | |
| 443 | sound.effects.echo.echofilter(input, output, delay=0.7, atten=4) |
| 444 | |
| 445 | An alternative way of importing the submodule is:: |
| 446 | |
| 447 | from sound.effects import echo |
| 448 | |
| 449 | This also loads the submodule :mod:`echo`, and makes it available without its |
| 450 | package prefix, so it can be used as follows:: |
| 451 | |
| 452 | echo.echofilter(input, output, delay=0.7, atten=4) |
| 453 | |
| 454 | Yet another variation is to import the desired function or variable directly:: |
| 455 | |
| 456 | from sound.effects.echo import echofilter |
| 457 | |
| 458 | Again, this loads the submodule :mod:`echo`, but this makes its function |
| 459 | :func:`echofilter` directly available:: |
| 460 | |
| 461 | echofilter(input, output, delay=0.7, atten=4) |
| 462 | |
| 463 | Note that when using ``from package import item``, the item can be either a |
| 464 | submodule (or subpackage) of the package, or some other name defined in the |
| 465 | package, like a function, class or variable. The ``import`` statement first |
| 466 | tests whether the item is defined in the package; if not, it assumes it is a |
| 467 | module and attempts to load it. If it fails to find it, an :exc:`ImportError` |
| 468 | exception is raised. |
| 469 | |
| 470 | Contrarily, when using syntax like ``import item.subitem.subsubitem``, each item |
| 471 | except for the last must be a package; the last item can be a module or a |
| 472 | package but can't be a class or function or variable defined in the previous |
| 473 | item. |
| 474 | |
| 475 | |
| 476 | .. _tut-pkg-import-star: |
| 477 | |
| 478 | Importing \* From a Package |
| 479 | --------------------------- |
| 480 | |
| 481 | .. index:: single: __all__ |
| 482 | |
| 483 | Now what happens when the user writes ``from sound.effects import *``? Ideally, |
| 484 | one would hope that this somehow goes out to the filesystem, finds which |
Benjamin Peterson | 4ac9ce4 | 2009-10-04 14:49:41 +0000 | [diff] [blame] | 485 | submodules are present in the package, and imports them all. This could take a |
| 486 | long time and importing sub-modules might have unwanted side-effects that should |
| 487 | only happen when the sub-module is explicitly imported. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 488 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 489 | The only solution is for the package author to provide an explicit index of the |
Alexandre Vassalotti | 6d3dfc3 | 2009-07-29 19:54:39 +0000 | [diff] [blame] | 490 | package. The :keyword:`import` statement uses the following convention: if a package's |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 491 | :file:`__init__.py` code defines a list named ``__all__``, it is taken to be the |
| 492 | list of module names that should be imported when ``from package import *`` is |
| 493 | encountered. It is up to the package author to keep this list up-to-date when a |
| 494 | new version of the package is released. Package authors may also decide not to |
| 495 | support it, if they don't see a use for importing \* from their package. For |
Georg Brandl | ac39add | 2013-10-06 19:21:14 +0200 | [diff] [blame] | 496 | example, the file :file:`sound/effects/__init__.py` could contain the following |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 497 | code:: |
| 498 | |
| 499 | __all__ = ["echo", "surround", "reverse"] |
| 500 | |
| 501 | This would mean that ``from sound.effects import *`` would import the three |
| 502 | named submodules of the :mod:`sound` package. |
| 503 | |
| 504 | If ``__all__`` is not defined, the statement ``from sound.effects import *`` |
| 505 | does *not* import all submodules from the package :mod:`sound.effects` into the |
| 506 | current namespace; it only ensures that the package :mod:`sound.effects` has |
| 507 | been imported (possibly running any initialization code in :file:`__init__.py`) |
| 508 | and then imports whatever names are defined in the package. This includes any |
| 509 | names defined (and submodules explicitly loaded) by :file:`__init__.py`. It |
| 510 | also includes any submodules of the package that were explicitly loaded by |
Alexandre Vassalotti | 6d3dfc3 | 2009-07-29 19:54:39 +0000 | [diff] [blame] | 511 | previous :keyword:`import` statements. Consider this code:: |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 512 | |
| 513 | import sound.effects.echo |
| 514 | import sound.effects.surround |
| 515 | from sound.effects import * |
| 516 | |
Alexandre Vassalotti | 6d3dfc3 | 2009-07-29 19:54:39 +0000 | [diff] [blame] | 517 | In this example, the :mod:`echo` and :mod:`surround` modules are imported in the |
| 518 | current namespace because they are defined in the :mod:`sound.effects` package |
| 519 | when the ``from...import`` statement is executed. (This also works when |
| 520 | ``__all__`` is defined.) |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 521 | |
Benjamin Peterson | 4ac9ce4 | 2009-10-04 14:49:41 +0000 | [diff] [blame] | 522 | Although certain modules are designed to export only names that follow certain |
Martin Panter | 898573a | 2016-12-10 05:12:56 +0000 | [diff] [blame] | 523 | patterns when you use ``import *``, it is still considered bad practice in |
Benjamin Peterson | 4ac9ce4 | 2009-10-04 14:49:41 +0000 | [diff] [blame] | 524 | production code. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 525 | |
| 526 | Remember, there is nothing wrong with using ``from Package import |
| 527 | specific_submodule``! In fact, this is the recommended notation unless the |
| 528 | importing module needs to use submodules with the same name from different |
| 529 | packages. |
| 530 | |
| 531 | |
| 532 | Intra-package References |
| 533 | ------------------------ |
| 534 | |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 535 | When packages are structured into subpackages (as with the :mod:`sound` package |
| 536 | in the example), you can use absolute imports to refer to submodules of siblings |
| 537 | packages. For example, if the module :mod:`sound.filters.vocoder` needs to use |
| 538 | the :mod:`echo` module in the :mod:`sound.effects` package, it can use ``from |
| 539 | sound.effects import echo``. |
| 540 | |
Georg Brandl | e6bcc91 | 2008-05-12 18:05:20 +0000 | [diff] [blame] | 541 | You can also write relative imports, with the ``from module import name`` form |
| 542 | of import statement. These imports use leading dots to indicate the current and |
| 543 | parent packages involved in the relative import. From the :mod:`surround` |
| 544 | module for example, you might use:: |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 545 | |
| 546 | from . import echo |
| 547 | from .. import formats |
| 548 | from ..filters import equalizer |
| 549 | |
Georg Brandl | e6bcc91 | 2008-05-12 18:05:20 +0000 | [diff] [blame] | 550 | Note that relative imports are based on the name of the current module. Since |
| 551 | the name of the main module is always ``"__main__"``, modules intended for use |
| 552 | as the main module of a Python application must always use absolute imports. |
Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 553 | |
| 554 | |
| 555 | Packages in Multiple Directories |
| 556 | -------------------------------- |
| 557 | |
| 558 | Packages support one more special attribute, :attr:`__path__`. This is |
| 559 | initialized to be a list containing the name of the directory holding the |
| 560 | package's :file:`__init__.py` before the code in that file is executed. This |
| 561 | variable can be modified; doing so affects future searches for modules and |
| 562 | subpackages contained in the package. |
| 563 | |
| 564 | While this feature is not often needed, it can be used to extend the set of |
| 565 | modules found in a package. |
| 566 | |
| 567 | |
| 568 | .. rubric:: Footnotes |
| 569 | |
| 570 | .. [#] In fact function definitions are also 'statements' that are 'executed'; the |
Georg Brandl | 5e2954e | 2013-04-14 11:47:46 +0200 | [diff] [blame] | 571 | execution of a module-level function definition enters the function name in |
| 572 | the module's global symbol table. |