blob: 45b794f48ef7c9eed1045170fce13bb3d04f297e [file] [log] [blame]
Guido van Rossumf10aa982007-08-17 18:30:38 +00001.. _glossary:
2
3********
4Glossary
5********
6
7.. if you add new entries, keep the alphabetical sorting!
8
9.. glossary::
10
11 ``>>>``
Benjamin Peterson5478b472008-09-17 22:25:09 +000012 The default Python prompt of the interactive shell. Often seen for code
13 examples which can be executed interactively in the interpreter.
Georg Brandl48310cd2009-01-03 21:18:54 +000014
Guido van Rossumf10aa982007-08-17 18:30:38 +000015 ``...``
Benjamin Peterson5478b472008-09-17 22:25:09 +000016 The default Python prompt of the interactive shell when entering code for
17 an indented code block or within a pair of matching left and right
18 delimiters (parentheses, square brackets or curly braces).
Christian Heimesd8654cf2007-12-02 15:22:16 +000019
Benjamin Petersond6313712008-07-31 16:23:04 +000020 2to3
21 A tool that tries to convert Python 2.x code to Python 3.x code by
Georg Brandl6faee4e2010-09-21 14:48:28 +000022 handling most of the incompatibilities which can be detected by parsing the
Benjamin Petersond6313712008-07-31 16:23:04 +000023 source and traversing the parse tree.
24
25 2to3 is available in the standard library as :mod:`lib2to3`; a standalone
26 entry point is provided as :file:`Tools/scripts/2to3`. See
27 :ref:`2to3-reference`.
28
Georg Brandl86b2fb92008-07-16 03:43:04 +000029 abstract base class
Éric Araujofa088db2011-06-04 18:42:38 +020030 Abstract base classes complement :term:`duck-typing` by
Georg Brandl22b34312009-07-26 14:54:51 +000031 providing a way to define interfaces when other techniques like
Éric Araujofa088db2011-06-04 18:42:38 +020032 :func:`hasattr` would be clumsy or subtly wrong (for example with
Éric Araujo04ac59a2011-08-19 09:07:46 +020033 :ref:`magic methods <special-lookup>`). ABCs introduce virtual
34 subclasses, which are classes that don't inherit from a class but are
35 still recognized by :func:`isinstance` and :func:`issubclass`; see the
36 :mod:`abc` module documentation. Python comes with many built-in ABCs for
Éric Araujo459b4522011-06-04 21:16:42 +020037 data structures (in the :mod:`collections.abc` module), numbers (in the
Éric Araujofa088db2011-06-04 18:42:38 +020038 :mod:`numbers` module), streams (in the :mod:`io` module), import finders
39 and loaders (in the :mod:`importlib.abc` module). You can create your own
40 ABCs with the :mod:`abc` module.
Benjamin Peterson41181742008-07-02 20:22:54 +000041
Christian Heimesd8654cf2007-12-02 15:22:16 +000042 argument
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -080043 A value passed to a :term:`function` (or :term:`method`) when calling the
Zachary Waree1391a02013-11-22 13:58:34 -060044 function. There are two kinds of argument:
Christian Heimesd8654cf2007-12-02 15:22:16 +000045
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -080046 * :dfn:`keyword argument`: an argument preceded by an identifier (e.g.
47 ``name=``) in a function call or passed as a value in a dictionary
48 preceded by ``**``. For example, ``3`` and ``5`` are both keyword
49 arguments in the following calls to :func:`complex`::
50
51 complex(real=3, imag=5)
52 complex(**{'real': 3, 'imag': 5})
53
54 * :dfn:`positional argument`: an argument that is not a keyword argument.
55 Positional arguments can appear at the beginning of an argument list
56 and/or be passed as elements of an :term:`iterable` preceded by ``*``.
57 For example, ``3`` and ``5`` are both positional arguments in the
58 following calls::
59
60 complex(3, 5)
61 complex(*(3, 5))
62
63 Arguments are assigned to the named local variables in a function body.
64 See the :ref:`calls` section for the rules governing this assignment.
65 Syntactically, any expression can be used to represent an argument; the
66 evaluated value is assigned to the local variable.
67
68 See also the :term:`parameter` glossary entry, the FAQ question on
69 :ref:`the difference between arguments and parameters
70 <faq-argument-vs-parameter>`, and :pep:`362`.
Benjamin Peterson5478b472008-09-17 22:25:09 +000071
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040072 asynchronous context manager
73 An object which controls the environment seen in an
74 :keyword:`async with` statement by defining :meth:`__aenter__` and
75 :meth:`__aexit__` methods. Introduced by :pep:`492`.
76
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040077 asynchronous iterable
78 An object, that can be used in an :keyword:`async for` statement.
Berker Peksagaf511402016-06-11 22:40:41 +030079 Must return an :term:`asynchronous iterator` from its
Yury Selivanova6f6edb2016-06-09 15:08:31 -040080 :meth:`__aiter__` method. Introduced by :pep:`492`.
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040081
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040082 asynchronous iterator
83 An object that implements :meth:`__aiter__` and :meth:`__anext__`
Yury Selivanova6f6edb2016-06-09 15:08:31 -040084 methods. ``__anext__`` must return an :term:`awaitable` object.
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040085 :keyword:`async for` resolves awaitable returned from asynchronous
86 iterator's :meth:`__anext__` method until it raises
87 :exc:`StopAsyncIteration` exception. Introduced by :pep:`492`.
88
Benjamin Peterson5478b472008-09-17 22:25:09 +000089 attribute
90 A value associated with an object which is referenced by name using
91 dotted expressions. For example, if an object *o* has an attribute
92 *a* it would be referenced as *o.a*.
Georg Brandl48310cd2009-01-03 21:18:54 +000093
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040094 awaitable
95 An object that can be used in an :keyword:`await` expression. Can be
96 a :term:`coroutine` or an object with an :meth:`__await__` method.
97 See also :pep:`492`.
98
Guido van Rossumf10aa982007-08-17 18:30:38 +000099 BDFL
100 Benevolent Dictator For Life, a.k.a. `Guido van Rossum
Georg Brandle73778c2014-10-29 08:36:35 +0100101 <https://www.python.org/~guido/>`_, Python's creator.
Georg Brandl48310cd2009-01-03 21:18:54 +0000102
Antoine Pitroudd799d22013-12-05 23:46:32 +0100103 binary file
104 A :term:`file object` able to read and write
105 :term:`bytes-like objects <bytes-like object>`.
106
107 .. seealso::
108 A :term:`text file` reads and writes :class:`str` objects.
109
Ezio Melottiaa54e2f2013-04-30 23:33:31 +0300110 bytes-like object
Stefan Krah70e543b2015-08-08 14:33:28 +0200111 An object that supports the :ref:`bufferobjects` and can
112 export a C-:term:`contiguous` buffer. This includes all :class:`bytes`,
113 :class:`bytearray`, and :class:`array.array` objects, as well as many
114 common :class:`memoryview` objects. Bytes-like objects can
Larry Hastingsab792ac2015-04-13 11:30:56 -0400115 be used for various operations that work with binary data; these include
116 compression, saving to a binary file, and sending over a socket.
117
118 Some operations need the binary data to be mutable. The documentation
119 often refers to these as "read-write bytes-like objects". Example
120 mutable buffer objects include :class:`bytearray` and a
121 :class:`memoryview` of a :class:`bytearray`.
122 Other operations require the binary data to be stored in
123 immutable objects ("read-only bytes-like objects"); examples
124 of these include :class:`bytes` and a :class:`memoryview`
125 of a :class:`bytes` object.
Ezio Melottiaa54e2f2013-04-30 23:33:31 +0300126
Georg Brandl9afde1c2007-11-01 20:32:30 +0000127 bytecode
128 Python source code is compiled into bytecode, the internal representation
Brett Cannon8315fd12010-07-02 22:03:00 +0000129 of a Python program in the CPython interpreter. The bytecode is also
130 cached in ``.pyc`` and ``.pyo`` files so that executing the same file is
131 faster the second time (recompilation from source to bytecode can be
132 avoided). This "intermediate language" is said to run on a
133 :term:`virtual machine` that executes the machine code corresponding to
134 each bytecode. Do note that bytecodes are not expected to work between
135 different Python virtual machines, nor to be stable between Python
136 releases.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000137
Georg Brandl2cb72d32010-07-03 10:26:54 +0000138 A list of bytecode instructions can be found in the documentation for
139 :ref:`the dis module <bytecodes>`.
140
Benjamin Peterson5478b472008-09-17 22:25:09 +0000141 class
142 A template for creating user-defined objects. Class definitions
143 normally contain method definitions which operate on instances of the
144 class.
Georg Brandl48310cd2009-01-03 21:18:54 +0000145
Benjamin Peterson5478b472008-09-17 22:25:09 +0000146 coercion
147 The implicit conversion of an instance of one type to another during an
148 operation which involves two arguments of the same type. For example,
149 ``int(3.15)`` converts the floating point number to the integer ``3``, but
150 in ``3+4.5``, each argument is of a different type (one int, one float),
151 and both must be converted to the same type before they can be added or it
Benjamin Peterson2d718222008-11-21 00:25:02 +0000152 will raise a ``TypeError``. Without coercion, all arguments of even
Benjamin Peterson5478b472008-09-17 22:25:09 +0000153 compatible types would have to be normalized to the same value by the
154 programmer, e.g., ``float(3)+4.5`` rather than just ``3+4.5``.
Georg Brandl48310cd2009-01-03 21:18:54 +0000155
Guido van Rossumf10aa982007-08-17 18:30:38 +0000156 complex number
157 An extension of the familiar real number system in which all numbers are
158 expressed as a sum of a real part and an imaginary part. Imaginary
159 numbers are real multiples of the imaginary unit (the square root of
160 ``-1``), often written ``i`` in mathematics or ``j`` in
Georg Brandl22b34312009-07-26 14:54:51 +0000161 engineering. Python has built-in support for complex numbers, which are
Guido van Rossumf10aa982007-08-17 18:30:38 +0000162 written with this latter notation; the imaginary part is written with a
163 ``j`` suffix, e.g., ``3+1j``. To get access to complex equivalents of the
164 :mod:`math` module, use :mod:`cmath`. Use of complex numbers is a fairly
165 advanced mathematical feature. If you're not aware of a need for them,
166 it's almost certain you can safely ignore them.
Georg Brandl48310cd2009-01-03 21:18:54 +0000167
Christian Heimes895627f2007-12-08 17:28:33 +0000168 context manager
Benjamin Peterson5478b472008-09-17 22:25:09 +0000169 An object which controls the environment seen in a :keyword:`with`
Christian Heimes895627f2007-12-08 17:28:33 +0000170 statement by defining :meth:`__enter__` and :meth:`__exit__` methods.
171 See :pep:`343`.
172
Stefan Krah70e543b2015-08-08 14:33:28 +0200173 contiguous
174 .. index:: C-contiguous, Fortran contiguous
175
176 A buffer is considered contiguous exactly if it is either
177 *C-contiguous* or *Fortran contiguous*. Zero-dimensional buffers are
178 C and Fortran contiguous. In one-dimensional arrays, the items
Martin Panter46f50722016-05-26 05:35:26 +0000179 must be laid out in memory next to each other, in order of
Stefan Krah70e543b2015-08-08 14:33:28 +0200180 increasing indexes starting from zero. In multidimensional
181 C-contiguous arrays, the last index varies the fastest when
182 visiting items in order of memory address. However, in
183 Fortran contiguous arrays, the first index varies the fastest.
184
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400185 coroutine
186 Coroutines is a more generalized form of subroutines. Subroutines are
Yury Selivanov66f88282015-06-24 11:04:15 -0400187 entered at one point and exited at another point. Coroutines can be
188 entered, exited, and resumed at many different points. They can be
189 implemented with the :keyword:`async def` statement. See also
190 :pep:`492`.
191
192 coroutine function
193 A function which returns a :term:`coroutine` object. A coroutine
194 function may be defined with the :keyword:`async def` statement,
195 and may contain :keyword:`await`, :keyword:`async for`, and
196 :keyword:`async with` keywords. These were introduced
197 by :pep:`492`.
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400198
Benjamin Peterson5478b472008-09-17 22:25:09 +0000199 CPython
Antoine Pitrou00342812011-01-06 16:31:28 +0000200 The canonical implementation of the Python programming language, as
Georg Brandle73778c2014-10-29 08:36:35 +0100201 distributed on `python.org <https://www.python.org>`_. The term "CPython"
Antoine Pitrou00342812011-01-06 16:31:28 +0000202 is used when necessary to distinguish this implementation from others
203 such as Jython or IronPython.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000204
Christian Heimesd8654cf2007-12-02 15:22:16 +0000205 decorator
206 A function returning another function, usually applied as a function
207 transformation using the ``@wrapper`` syntax. Common examples for
208 decorators are :func:`classmethod` and :func:`staticmethod`.
209
210 The decorator syntax is merely syntactic sugar, the following two
211 function definitions are semantically equivalent::
212
213 def f(...):
214 ...
215 f = staticmethod(f)
216
217 @staticmethod
218 def f(...):
219 ...
220
Georg Brandlaf265f42008-12-07 15:06:20 +0000221 The same concept exists for classes, but is less commonly used there. See
222 the documentation for :ref:`function definitions <function>` and
223 :ref:`class definitions <class>` for more about decorators.
Georg Brandla09ca382007-12-02 18:20:12 +0000224
Guido van Rossumf10aa982007-08-17 18:30:38 +0000225 descriptor
Benjamin Peterson5478b472008-09-17 22:25:09 +0000226 Any object which defines the methods :meth:`__get__`, :meth:`__set__`, or
Georg Brandl85eb8c12007-08-31 16:33:38 +0000227 :meth:`__delete__`. When a class attribute is a descriptor, its special
Georg Brandl9afde1c2007-11-01 20:32:30 +0000228 binding behavior is triggered upon attribute lookup. Normally, using
229 *a.b* to get, set or delete an attribute looks up the object named *b* in
230 the class dictionary for *a*, but if *b* is a descriptor, the respective
231 descriptor method gets called. Understanding descriptors is a key to a
232 deep understanding of Python because they are the basis for many features
233 including functions, methods, properties, class methods, static methods,
234 and reference to super classes.
235
236 For more information about descriptors' methods, see :ref:`descriptors`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000237
Guido van Rossumf10aa982007-08-17 18:30:38 +0000238 dictionary
Senthil Kumaran6080db72012-03-12 10:05:34 -0700239 An associative array, where arbitrary keys are mapped to values. The
240 keys can be any object with :meth:`__hash__` and :meth:`__eq__` methods.
241 Called a hash in Perl.
Georg Brandl3dbca812008-07-23 16:10:53 +0000242
Martin Panter85b8f452015-10-07 09:56:46 +0000243 dictionary view
244 The objects returned from :meth:`dict.keys`, :meth:`dict.values`, and
245 :meth:`dict.items` are called dictionary views. They provide a dynamic
246 view on the dictionary’s entries, which means that when the dictionary
247 changes, the view reflects these changes. To force the
248 dictionary view to become a full list use ``list(dictview)``. See
249 :ref:`dict-views`.
250
Georg Brandl3dbca812008-07-23 16:10:53 +0000251 docstring
Benjamin Peterson5478b472008-09-17 22:25:09 +0000252 A string literal which appears as the first expression in a class,
253 function or module. While ignored when the suite is executed, it is
254 recognized by the compiler and put into the :attr:`__doc__` attribute
255 of the enclosing class, function or module. Since it is available via
256 introspection, it is the canonical place for documentation of the
Georg Brandl3dbca812008-07-23 16:10:53 +0000257 object.
Georg Brandl48310cd2009-01-03 21:18:54 +0000258
259 duck-typing
Georg Brandl73b1c7b2010-07-10 10:39:57 +0000260 A programming style which does not look at an object's type to determine
261 if it has the right interface; instead, the method or attribute is simply
262 called or used ("If it looks like a duck and quacks like a duck, it
Guido van Rossumf10aa982007-08-17 18:30:38 +0000263 must be a duck.") By emphasizing interfaces rather than specific types,
264 well-designed code improves its flexibility by allowing polymorphic
265 substitution. Duck-typing avoids tests using :func:`type` or
Georg Brandl8a1c2542010-07-11 08:36:20 +0000266 :func:`isinstance`. (Note, however, that duck-typing can be complemented
Éric Araujo0519b092011-08-19 00:39:19 +0200267 with :term:`abstract base classes <abstract base class>`.) Instead, it
268 typically employs :func:`hasattr` tests or :term:`EAFP` programming.
Georg Brandl48310cd2009-01-03 21:18:54 +0000269
Guido van Rossumf10aa982007-08-17 18:30:38 +0000270 EAFP
271 Easier to ask for forgiveness than permission. This common Python coding
272 style assumes the existence of valid keys or attributes and catches
273 exceptions if the assumption proves false. This clean and fast style is
274 characterized by the presence of many :keyword:`try` and :keyword:`except`
Georg Brandl48310cd2009-01-03 21:18:54 +0000275 statements. The technique contrasts with the :term:`LBYL` style
Benjamin Peterson5478b472008-09-17 22:25:09 +0000276 common to many other languages such as C.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000277
Christian Heimesd8654cf2007-12-02 15:22:16 +0000278 expression
279 A piece of syntax which can be evaluated to some value. In other words,
Benjamin Peterson5478b472008-09-17 22:25:09 +0000280 an expression is an accumulation of expression elements like literals,
281 names, attribute access, operators or function calls which all return a
282 value. In contrast to many other languages, not all language constructs
283 are expressions. There are also :term:`statement`\s which cannot be used
284 as expressions, such as :keyword:`if`. Assignments are also statements,
285 not expressions.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000286
Guido van Rossumf10aa982007-08-17 18:30:38 +0000287 extension module
Georg Brandl9d9848e2010-12-28 11:48:53 +0000288 A module written in C or C++, using Python's C API to interact with the
289 core and with user code.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000290
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000291 file object
292 An object exposing a file-oriented API (with methods such as
Georg Brandl9d9848e2010-12-28 11:48:53 +0000293 :meth:`read()` or :meth:`write()`) to an underlying resource. Depending
294 on the way it was created, a file object can mediate access to a real
Eli Benderskydbaedb82012-03-30 11:02:05 +0300295 on-disk file or to another type of storage or communication device
Georg Brandl9d9848e2010-12-28 11:48:53 +0000296 (for example standard input/output, in-memory buffers, sockets, pipes,
297 etc.). File objects are also called :dfn:`file-like objects` or
298 :dfn:`streams`.
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000299
Antoine Pitroudd799d22013-12-05 23:46:32 +0100300 There are actually three categories of file objects: raw
301 :term:`binary files <binary file>`, buffered
302 :term:`binary files <binary file>` and :term:`text files <text file>`.
303 Their interfaces are defined in the :mod:`io` module. The canonical
304 way to create a file object is by using the :func:`open` function.
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000305
306 file-like object
307 A synonym for :term:`file object`.
308
Brett Cannon51d4aab2009-01-25 04:21:39 +0000309 finder
Brett Cannonccddbb12015-12-04 15:46:21 -0800310 An object that tries to find the :term:`loader` for a module that is
311 being imported.
312
313 Since Python 3.3, there are two types of finder: :term:`meta path finders
314 <meta path finder>` for use with :data:`sys.meta_path`, and :term:`path
315 entry finders <path entry finder>` for use with :data:`sys.path_hooks`.
316
317 See :pep:`302`, :pep:`420` and :pep:`451` for much more detail.
Brett Cannon51d4aab2009-01-25 04:21:39 +0000318
Benjamin Peterson2d718222008-11-21 00:25:02 +0000319 floor division
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000320 Mathematical division that rounds down to nearest integer. The floor
321 division operator is ``//``. For example, the expression ``11 // 4``
322 evaluates to ``2`` in contrast to the ``2.75`` returned by float true
323 division. Note that ``(-11) // 4`` is ``-3`` because that is ``-2.75``
324 rounded *downward*. See :pep:`238`.
Benjamin Peterson2d718222008-11-21 00:25:02 +0000325
Christian Heimesd8654cf2007-12-02 15:22:16 +0000326 function
327 A series of statements which returns some value to a caller. It can also
Chris Jerdonekb4309942012-12-25 14:54:44 -0800328 be passed zero or more :term:`arguments <argument>` which may be used in
329 the execution of the body. See also :term:`parameter`, :term:`method`,
330 and the :ref:`function` section.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000331
R David Murray25cd0912013-05-06 12:58:16 -0400332 function annotation
333 An arbitrary metadata value associated with a function parameter or return
334 value. Its syntax is explained in section :ref:`function`. Annotations
335 may be accessed via the :attr:`__annotations__` special attribute of a
336 function object.
337
338 Python itself does not assign any particular meaning to function
339 annotations. They are intended to be interpreted by third-party libraries
340 or tools. See :pep:`3107`, which describes some of their potential uses.
341
Guido van Rossumf10aa982007-08-17 18:30:38 +0000342 __future__
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000343 A pseudo-module which programmers can use to enable new language features
Benjamin Peterson2d718222008-11-21 00:25:02 +0000344 which are not compatible with the current interpreter.
345
346 By importing the :mod:`__future__` module and evaluating its variables,
347 you can see when a new feature was first added to the language and when it
348 becomes the default::
Georg Brandl48310cd2009-01-03 21:18:54 +0000349
Guido van Rossumf10aa982007-08-17 18:30:38 +0000350 >>> import __future__
351 >>> __future__.division
352 _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
353
354 garbage collection
355 The process of freeing memory when it is not used anymore. Python
356 performs garbage collection via reference counting and a cyclic garbage
357 collector that is able to detect and break reference cycles.
Georg Brandl48310cd2009-01-03 21:18:54 +0000358
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000359 .. index:: single: generator
360
Guido van Rossumf10aa982007-08-17 18:30:38 +0000361 generator
Yury Selivanov5376ba92015-06-22 12:19:30 -0400362 A function which returns a :term:`generator iterator`. It looks like a
363 normal function except that it contains :keyword:`yield` expressions
364 for producing a series of values usable in a for-loop or that can be
365 retrieved one at a time with the :func:`next` function.
366
367 Usually refers to a generator function, but may refer to a
368 *generator iterator* in some contexts. In cases where the intended
369 meaning isn't clear, using the full terms avoids ambiguity.
370
371 generator iterator
372 An object created by a :term:`generator` function.
373
374 Each :keyword:`yield` temporarily suspends processing, remembering the
375 location execution state (including local variables and pending
376 try-statements). When the *generator iterator* resumes, it picks-up where
377 it left-off (in contrast to functions which start fresh on every
378 invocation).
Georg Brandl48310cd2009-01-03 21:18:54 +0000379
Guido van Rossumf10aa982007-08-17 18:30:38 +0000380 .. index:: single: generator expression
Georg Brandl48310cd2009-01-03 21:18:54 +0000381
Guido van Rossumf10aa982007-08-17 18:30:38 +0000382 generator expression
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000383 An expression that returns an iterator. It looks like a normal expression
Guido van Rossumf10aa982007-08-17 18:30:38 +0000384 followed by a :keyword:`for` expression defining a loop variable, range,
385 and an optional :keyword:`if` expression. The combined expression
386 generates values for an enclosing function::
Georg Brandl48310cd2009-01-03 21:18:54 +0000387
Guido van Rossumf10aa982007-08-17 18:30:38 +0000388 >>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
389 285
Georg Brandl48310cd2009-01-03 21:18:54 +0000390
Łukasz Langafdcf2b72013-06-07 22:54:03 +0200391 generic function
392 A function composed of multiple functions implementing the same operation
393 for different types. Which implementation should be used during a call is
394 determined by the dispatch algorithm.
395
396 See also the :term:`single dispatch` glossary entry, the
397 :func:`functools.singledispatch` decorator, and :pep:`443`.
398
399
Guido van Rossumf10aa982007-08-17 18:30:38 +0000400 GIL
401 See :term:`global interpreter lock`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000402
Guido van Rossumf10aa982007-08-17 18:30:38 +0000403 global interpreter lock
Antoine Pitrou00342812011-01-06 16:31:28 +0000404 The mechanism used by the :term:`CPython` interpreter to assure that
405 only one thread executes Python :term:`bytecode` at a time.
406 This simplifies the CPython implementation by making the object model
407 (including critical built-in types such as :class:`dict`) implicitly
408 safe against concurrent access. Locking the entire interpreter
409 makes it easier for the interpreter to be multi-threaded, at the
410 expense of much of the parallelism afforded by multi-processor
411 machines.
412
413 However, some extension modules, either standard or third-party,
414 are designed so as to release the GIL when doing computationally-intensive
415 tasks such as compression or hashing. Also, the GIL is always released
416 when doing I/O.
417
418 Past efforts to create a "free-threaded" interpreter (one which locks
419 shared data at a much finer granularity) have not been successful
420 because performance suffered in the common single-processor case. It
421 is believed that overcoming this performance issue would make the
422 implementation much more complicated and therefore costlier to maintain.
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000423
424 hashable
Benjamin Peterson5478b472008-09-17 22:25:09 +0000425 An object is *hashable* if it has a hash value which never changes during
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000426 its lifetime (it needs a :meth:`__hash__` method), and can be compared to
Georg Brandl05f5ab72008-09-24 09:11:47 +0000427 other objects (it needs an :meth:`__eq__` method). Hashable objects which
428 compare equal must have the same hash value.
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000429
430 Hashability makes an object usable as a dictionary key and a set member,
431 because these data structures use the hash value internally.
432
Benjamin Peterson5478b472008-09-17 22:25:09 +0000433 All of Python's immutable built-in objects are hashable, while no mutable
434 containers (such as lists or dictionaries) are. Objects which are
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000435 instances of user-defined classes are hashable by default; they all
Georg Brandl4dd27a32014-10-06 16:45:23 +0200436 compare unequal (except with themselves), and their hash value is derived
437 from their :func:`id`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000438
Guido van Rossumf10aa982007-08-17 18:30:38 +0000439 IDLE
440 An Integrated Development Environment for Python. IDLE is a basic editor
Benjamin Peterson5478b472008-09-17 22:25:09 +0000441 and interpreter environment which ships with the standard distribution of
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000442 Python.
Georg Brandl48310cd2009-01-03 21:18:54 +0000443
Guido van Rossumf10aa982007-08-17 18:30:38 +0000444 immutable
Benjamin Peterson5478b472008-09-17 22:25:09 +0000445 An object with a fixed value. Immutable objects include numbers, strings and
446 tuples. Such an object cannot be altered. A new object has to
Guido van Rossumf10aa982007-08-17 18:30:38 +0000447 be created if a different value has to be stored. They play an important
448 role in places where a constant hash value is needed, for example as a key
449 in a dictionary.
Benjamin Peterson2d718222008-11-21 00:25:02 +0000450
Barry Warsawdadebab2012-07-31 16:03:09 -0400451 import path
452 A list of locations (or :term:`path entries <path entry>`) that are
Nick Coghlan1685db02012-08-20 13:49:08 +1000453 searched by the :term:`path based finder` for modules to import. During
Barry Warsawdadebab2012-07-31 16:03:09 -0400454 import, this list of locations usually comes from :data:`sys.path`, but
455 for subpackages it may also come from the parent package's ``__path__``
456 attribute.
457
Barry Warsawd7d21942012-07-29 16:36:17 -0400458 importing
459 The process by which Python code in one module is made available to
460 Python code in another module.
461
Brett Cannon51d4aab2009-01-25 04:21:39 +0000462 importer
463 An object that both finds and loads a module; both a
464 :term:`finder` and :term:`loader` object.
465
Guido van Rossumf10aa982007-08-17 18:30:38 +0000466 interactive
Benjamin Peterson5478b472008-09-17 22:25:09 +0000467 Python has an interactive interpreter which means you can enter
468 statements and expressions at the interpreter prompt, immediately
469 execute them and see their results. Just launch ``python`` with no
470 arguments (possibly by selecting it from your computer's main
471 menu). It is a very powerful way to test out new ideas or inspect
472 modules and packages (remember ``help(x)``).
Georg Brandl48310cd2009-01-03 21:18:54 +0000473
Guido van Rossumf10aa982007-08-17 18:30:38 +0000474 interpreted
Benjamin Peterson5478b472008-09-17 22:25:09 +0000475 Python is an interpreted language, as opposed to a compiled one,
476 though the distinction can be blurry because of the presence of the
477 bytecode compiler. This means that source files can be run directly
478 without explicitly creating an executable which is then run.
479 Interpreted languages typically have a shorter development/debug cycle
480 than compiled ones, though their programs generally also run more
481 slowly. See also :term:`interactive`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000482
Antoine Pitrou5db1bb82014-12-07 01:28:27 +0100483 interpreter shutdown
484 When asked to shut down, the Python interpreter enters a special phase
485 where it gradually releases all allocated resources, such as modules
486 and various critical internal structures. It also makes several calls
487 to the :term:`garbage collector <garbage collection>`. This can trigger
488 the execution of code in user-defined destructors or weakref callbacks.
489 Code executed during the shutdown phase can encounter various
490 exceptions as the resources it relies on may not function anymore
491 (common examples are library modules or the warnings machinery).
492
493 The main reason for interpreter shutdown is that the ``__main__`` module
494 or the script being run has finished executing.
495
Guido van Rossumf10aa982007-08-17 18:30:38 +0000496 iterable
Ezio Melottid581fff2013-01-02 22:29:09 +0200497 An object capable of returning its members one at a time. Examples of
498 iterables include all sequence types (such as :class:`list`, :class:`str`,
499 and :class:`tuple`) and some non-sequence types like :class:`dict`,
500 :term:`file objects <file object>`, and objects of any classes you define
501 with an :meth:`__iter__` or :meth:`__getitem__` method. Iterables can be
502 used in a :keyword:`for` loop and in many other places where a sequence is
503 needed (:func:`zip`, :func:`map`, ...). When an iterable object is passed
504 as an argument to the built-in function :func:`iter`, it returns an
505 iterator for the object. This iterator is good for one pass over the set
506 of values. When using iterables, it is usually not necessary to call
507 :func:`iter` or deal with iterator objects yourself. The ``for``
Guido van Rossumf10aa982007-08-17 18:30:38 +0000508 statement does that automatically for you, creating a temporary unnamed
509 variable to hold the iterator for the duration of the loop. See also
510 :term:`iterator`, :term:`sequence`, and :term:`generator`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000511
Guido van Rossumf10aa982007-08-17 18:30:38 +0000512 iterator
513 An object representing a stream of data. Repeated calls to the iterator's
Ezio Melotti7fa82222012-10-12 13:42:08 +0300514 :meth:`~iterator.__next__` method (or passing it to the built-in function
Georg Brandlb30f3302011-01-06 09:23:56 +0000515 :func:`next`) return successive items in the stream. When no more data
516 are available a :exc:`StopIteration` exception is raised instead. At this
Benjamin Petersone7c78b22008-07-03 20:28:26 +0000517 point, the iterator object is exhausted and any further calls to its
Georg Brandlb30f3302011-01-06 09:23:56 +0000518 :meth:`__next__` method just raise :exc:`StopIteration` again. Iterators
519 are required to have an :meth:`__iter__` method that returns the iterator
Guido van Rossumf10aa982007-08-17 18:30:38 +0000520 object itself so every iterator is also iterable and may be used in most
521 places where other iterables are accepted. One notable exception is code
Benjamin Peterson5478b472008-09-17 22:25:09 +0000522 which attempts multiple iteration passes. A container object (such as a
Guido van Rossumf10aa982007-08-17 18:30:38 +0000523 :class:`list`) produces a fresh new iterator each time you pass it to the
524 :func:`iter` function or use it in a :keyword:`for` loop. Attempting this
525 with an iterator will just return the same exhausted iterator object used
526 in the previous iteration pass, making it appear like an empty container.
Georg Brandl48310cd2009-01-03 21:18:54 +0000527
Georg Brandl9afde1c2007-11-01 20:32:30 +0000528 More information can be found in :ref:`typeiter`.
529
Georg Brandlc275e152010-11-05 07:10:41 +0000530 key function
531 A key function or collation function is a callable that returns a value
532 used for sorting or ordering. For example, :func:`locale.strxfrm` is
533 used to produce a sort key that is aware of locale specific sort
534 conventions.
535
536 A number of tools in Python accept key functions to control how elements
537 are ordered or grouped. They include :func:`min`, :func:`max`,
Raymond Hettinger35db4392014-05-30 02:28:36 -0700538 :func:`sorted`, :meth:`list.sort`, :func:`heapq.merge`,
539 :func:`heapq.nsmallest`, :func:`heapq.nlargest`, and
540 :func:`itertools.groupby`.
Georg Brandlc275e152010-11-05 07:10:41 +0000541
542 There are several ways to create a key function. For example. the
543 :meth:`str.lower` method can serve as a key function for case insensitive
Raymond Hettinger35db4392014-05-30 02:28:36 -0700544 sorts. Alternatively, a key function can be built from a
Georg Brandlc275e152010-11-05 07:10:41 +0000545 :keyword:`lambda` expression such as ``lambda r: (r[0], r[2])``. Also,
Sandro Tosi165a2c22012-04-01 01:50:00 +0200546 the :mod:`operator` module provides three key function constructors:
Georg Brandlc275e152010-11-05 07:10:41 +0000547 :func:`~operator.attrgetter`, :func:`~operator.itemgetter`, and
548 :func:`~operator.methodcaller`. See the :ref:`Sorting HOW TO
549 <sortinghowto>` for examples of how to create and use key functions.
550
Christian Heimesd8654cf2007-12-02 15:22:16 +0000551 keyword argument
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800552 See :term:`argument`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000553
554 lambda
555 An anonymous inline function consisting of a single :term:`expression`
556 which is evaluated when the function is called. The syntax to create
557 a lambda function is ``lambda [arguments]: expression``
558
Guido van Rossumf10aa982007-08-17 18:30:38 +0000559 LBYL
560 Look before you leap. This coding style explicitly tests for
561 pre-conditions before making calls or lookups. This style contrasts with
562 the :term:`EAFP` approach and is characterized by the presence of many
563 :keyword:`if` statements.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000564
Raymond Hettinger09f44142010-12-17 20:19:50 +0000565 In a multi-threaded environment, the LBYL approach can risk introducing a
566 race condition between "the looking" and "the leaping". For example, the
567 code, ``if key in mapping: return mapping[key]`` can fail if another
568 thread removes *key* from *mapping* after the test, but before the lookup.
569 This issue can be solved with locks or by using the EAFP approach.
570
Benjamin Peterson5478b472008-09-17 22:25:09 +0000571 list
572 A built-in Python :term:`sequence`. Despite its name it is more akin
573 to an array in other languages than to a linked list since access to
574 elements are O(1).
Georg Brandl48310cd2009-01-03 21:18:54 +0000575
Guido van Rossumf10aa982007-08-17 18:30:38 +0000576 list comprehension
Benjamin Peterson5478b472008-09-17 22:25:09 +0000577 A compact way to process all or part of the elements in a sequence and
Georg Brandlede6c2a2010-01-05 10:22:04 +0000578 return a list with the results. ``result = ['{:#04x}'.format(x) for x in
Benjamin Peterson5478b472008-09-17 22:25:09 +0000579 range(256) if x % 2 == 0]`` generates a list of strings containing
580 even hex numbers (0x..) in the range from 0 to 255. The :keyword:`if`
581 clause is optional. If omitted, all elements in ``range(256)`` are
582 processed.
Georg Brandl48310cd2009-01-03 21:18:54 +0000583
Brett Cannon51d4aab2009-01-25 04:21:39 +0000584 loader
585 An object that loads a module. It must define a method named
586 :meth:`load_module`. A loader is typically returned by a
Brett Cannone43b0602009-03-21 03:11:16 +0000587 :term:`finder`. See :pep:`302` for details and
588 :class:`importlib.abc.Loader` for an :term:`abstract base class`.
Brett Cannon51d4aab2009-01-25 04:21:39 +0000589
Guido van Rossumf10aa982007-08-17 18:30:38 +0000590 mapping
Raymond Hettingere3ee66f2011-01-08 23:44:37 +0000591 A container object that supports arbitrary key lookups and implements the
Éric Araujob8edbdf2011-09-01 05:57:12 +0200592 methods specified in the :class:`~collections.abc.Mapping` or
593 :class:`~collections.abc.MutableMapping`
Éric Araujofa088db2011-06-04 18:42:38 +0200594 :ref:`abstract base classes <collections-abstract-base-classes>`. Examples
595 include :class:`dict`, :class:`collections.defaultdict`,
Raymond Hettingere3ee66f2011-01-08 23:44:37 +0000596 :class:`collections.OrderedDict` and :class:`collections.Counter`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000597
Barry Warsawd7d21942012-07-29 16:36:17 -0400598 meta path finder
Brett Cannonccddbb12015-12-04 15:46:21 -0800599 A :term:`finder` returned by a search of :data:`sys.meta_path`. Meta path
Barry Warsawdadebab2012-07-31 16:03:09 -0400600 finders are related to, but different from :term:`path entry finders
601 <path entry finder>`.
Barry Warsawd7d21942012-07-29 16:36:17 -0400602
Brett Cannonccddbb12015-12-04 15:46:21 -0800603 See :class:`importlib.abc.MetaPathFinder` for the methods that meta path
604 finders implement.
605
Guido van Rossumf10aa982007-08-17 18:30:38 +0000606 metaclass
607 The class of a class. Class definitions create a class name, a class
608 dictionary, and a list of base classes. The metaclass is responsible for
609 taking those three arguments and creating the class. Most object oriented
610 programming languages provide a default implementation. What makes Python
611 special is that it is possible to create custom metaclasses. Most users
612 never need this tool, but when the need arises, metaclasses can provide
613 powerful, elegant solutions. They have been used for logging attribute
614 access, adding thread-safety, tracking object creation, implementing
615 singletons, and many other tasks.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000616
617 More information can be found in :ref:`metaclasses`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000618
619 method
Benjamin Peterson5478b472008-09-17 22:25:09 +0000620 A function which is defined inside a class body. If called as an attribute
Christian Heimesd8654cf2007-12-02 15:22:16 +0000621 of an instance of that class, the method will get the instance object as
622 its first :term:`argument` (which is usually called ``self``).
623 See :term:`function` and :term:`nested scope`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000624
Michael Foord95fc51d2010-11-20 15:07:30 +0000625 method resolution order
626 Method Resolution Order is the order in which base classes are searched
627 for a member during lookup. See `The Python 2.3 Method Resolution Order
Senthil Kumaran3858a1c2016-01-09 22:33:54 -0800628 <https://www.python.org/download/releases/2.3/mro/>`_ for details of the
629 algorithm used by the Python interpreter since the 2.3 release.
Michael Foord95fc51d2010-11-20 15:07:30 +0000630
Barry Warsawd7d21942012-07-29 16:36:17 -0400631 module
632 An object that serves as an organizational unit of Python code. Modules
Barry Warsawc1e721b2012-07-30 16:24:12 -0400633 have a namespace containing arbitrary Python objects. Modules are loaded
Barry Warsawd7d21942012-07-29 16:36:17 -0400634 into Python by the process of :term:`importing`.
635
Georg Brandlbcce1252013-10-08 08:06:18 +0200636 See also :term:`package`.
637
Eric Snowca2d8542013-12-16 23:06:52 -0700638 module spec
639 A namespace containing the import-related information used to load a
Brett Cannonccddbb12015-12-04 15:46:21 -0800640 module. An instance of :class:`importlib.machinery.ModuleSpec`.
Eric Snowca2d8542013-12-16 23:06:52 -0700641
Michael Foord95fc51d2010-11-20 15:07:30 +0000642 MRO
643 See :term:`method resolution order`.
644
Guido van Rossumf10aa982007-08-17 18:30:38 +0000645 mutable
646 Mutable objects can change their value but keep their :func:`id`. See
647 also :term:`immutable`.
Christian Heimes25bb7832008-01-11 16:17:00 +0000648
649 named tuple
Raymond Hettingerd04fa312009-02-04 19:45:13 +0000650 Any tuple-like class whose indexable elements are also accessible using
Christian Heimesd32ed6f2008-01-14 18:49:24 +0000651 named attributes (for example, :func:`time.localtime` returns a
652 tuple-like object where the *year* is accessible either with an
653 index such as ``t[0]`` or with a named attribute like ``t.tm_year``).
654
655 A named tuple can be a built-in type such as :class:`time.struct_time`,
656 or it can be created with a regular class definition. A full featured
657 named tuple can also be created with the factory function
658 :func:`collections.namedtuple`. The latter approach automatically
659 provides extra features such as a self-documenting representation like
660 ``Employee(name='jones', title='programmer')``.
Georg Brandl48310cd2009-01-03 21:18:54 +0000661
Guido van Rossumf10aa982007-08-17 18:30:38 +0000662 namespace
663 The place where a variable is stored. Namespaces are implemented as
Georg Brandl22b34312009-07-26 14:54:51 +0000664 dictionaries. There are the local, global and built-in namespaces as well
Guido van Rossumf10aa982007-08-17 18:30:38 +0000665 as nested namespaces in objects (in methods). Namespaces support
666 modularity by preventing naming conflicts. For instance, the functions
Serhiy Storchaka0d196ed2013-10-09 14:02:31 +0300667 :func:`builtins.open <.open>` and :func:`os.open` are distinguished by
668 their namespaces. Namespaces also aid readability and maintainability by
669 making it clear which module implements a function. For instance, writing
Éric Araujo7af8ebb2011-09-01 03:20:13 +0200670 :func:`random.seed` or :func:`itertools.islice` makes it clear that those
Guido van Rossumf10aa982007-08-17 18:30:38 +0000671 functions are implemented by the :mod:`random` and :mod:`itertools`
Benjamin Peterson5478b472008-09-17 22:25:09 +0000672 modules, respectively.
Georg Brandl48310cd2009-01-03 21:18:54 +0000673
Barry Warsawd7d21942012-07-29 16:36:17 -0400674 namespace package
675 A :pep:`420` :term:`package` which serves only as a container for
676 subpackages. Namespace packages may have no physical representation,
677 and specifically are not like a :term:`regular package` because they
678 have no ``__init__.py`` file.
679
Georg Brandlbcce1252013-10-08 08:06:18 +0200680 See also :term:`module`.
681
Guido van Rossumf10aa982007-08-17 18:30:38 +0000682 nested scope
683 The ability to refer to a variable in an enclosing definition. For
684 instance, a function defined inside another function can refer to
Benjamin Peterson927ccd22010-06-29 18:36:39 +0000685 variables in the outer function. Note that nested scopes by default work
686 only for reference and not for assignment. Local variables both read and
687 write in the innermost scope. Likewise, global variables read and write
688 to the global namespace. The :keyword:`nonlocal` allows writing to outer
689 scopes.
Georg Brandl48310cd2009-01-03 21:18:54 +0000690
Guido van Rossumf10aa982007-08-17 18:30:38 +0000691 new-style class
Georg Brandl85eb8c12007-08-31 16:33:38 +0000692 Old name for the flavor of classes now used for all class objects. In
693 earlier Python versions, only new-style classes could use Python's newer,
Serhiy Storchaka0d196ed2013-10-09 14:02:31 +0300694 versatile features like :attr:`~object.__slots__`, descriptors,
695 properties, :meth:`__getattribute__`, class methods, and static methods.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000696
Benjamin Peterson5478b472008-09-17 22:25:09 +0000697 object
698 Any data with state (attributes or value) and defined behavior
699 (methods). Also the ultimate base class of any :term:`new-style
700 class`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000701
Barry Warsawd7d21942012-07-29 16:36:17 -0400702 package
Georg Brandlbcce1252013-10-08 08:06:18 +0200703 A Python :term:`module` which can contain submodules or recursively,
Barry Warsawd7d21942012-07-29 16:36:17 -0400704 subpackages. Technically, a package is a Python module with an
705 ``__path__`` attribute.
706
Georg Brandlbcce1252013-10-08 08:06:18 +0200707 See also :term:`regular package` and :term:`namespace package`.
708
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800709 parameter
710 A named entity in a :term:`function` (or method) definition that
711 specifies an :term:`argument` (or in some cases, arguments) that the
Zachary Waree1391a02013-11-22 13:58:34 -0600712 function can accept. There are five kinds of parameter:
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800713
714 * :dfn:`positional-or-keyword`: specifies an argument that can be passed
715 either :term:`positionally <argument>` or as a :term:`keyword argument
716 <argument>`. This is the default kind of parameter, for example *foo*
717 and *bar* in the following::
718
719 def func(foo, bar=None): ...
720
721 * :dfn:`positional-only`: specifies an argument that can be supplied only
722 by position. Python has no syntax for defining positional-only
723 parameters. However, some built-in functions have positional-only
724 parameters (e.g. :func:`abs`).
725
Zachary Waree1391a02013-11-22 13:58:34 -0600726 .. _keyword-only_parameter:
727
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800728 * :dfn:`keyword-only`: specifies an argument that can be supplied only
729 by keyword. Keyword-only parameters can be defined by including a
730 single var-positional parameter or bare ``*`` in the parameter list
731 of the function definition before them, for example *kw_only1* and
732 *kw_only2* in the following::
733
734 def func(arg, *, kw_only1, kw_only2): ...
735
736 * :dfn:`var-positional`: specifies that an arbitrary sequence of
737 positional arguments can be provided (in addition to any positional
738 arguments already accepted by other parameters). Such a parameter can
739 be defined by prepending the parameter name with ``*``, for example
740 *args* in the following::
741
742 def func(*args, **kwargs): ...
743
744 * :dfn:`var-keyword`: specifies that arbitrarily many keyword arguments
745 can be provided (in addition to any keyword arguments already accepted
746 by other parameters). Such a parameter can be defined by prepending
747 the parameter name with ``**``, for example *kwargs* in the example
748 above.
749
750 Parameters can specify both optional and required arguments, as well as
751 default values for some optional arguments.
752
753 See also the :term:`argument` glossary entry, the FAQ question on
754 :ref:`the difference between arguments and parameters
755 <faq-argument-vs-parameter>`, the :class:`inspect.Parameter` class, the
756 :ref:`function` section, and :pep:`362`.
757
Barry Warsawdadebab2012-07-31 16:03:09 -0400758 path entry
759 A single location on the :term:`import path` which the :term:`path
Nick Coghlan1685db02012-08-20 13:49:08 +1000760 based finder` consults to find modules for importing.
Barry Warsawdadebab2012-07-31 16:03:09 -0400761
762 path entry finder
763 A :term:`finder` returned by a callable on :data:`sys.path_hooks`
764 (i.e. a :term:`path entry hook`) which knows how to locate modules given
765 a :term:`path entry`.
766
Brett Cannonccddbb12015-12-04 15:46:21 -0800767 See :class:`importlib.abc.PathEntryFinder` for the methods that path entry
768 finders implement.
769
Barry Warsawdadebab2012-07-31 16:03:09 -0400770 path entry hook
771 A callable on the :data:`sys.path_hook` list which returns a :term:`path
772 entry finder` if it knows how to find modules on a specific :term:`path
773 entry`.
774
Nick Coghlan1685db02012-08-20 13:49:08 +1000775 path based finder
Barry Warsawdadebab2012-07-31 16:03:09 -0400776 One of the default :term:`meta path finders <meta path finder>` which
777 searches an :term:`import path` for modules.
Barry Warsawd7d21942012-07-29 16:36:17 -0400778
779 portion
780 A set of files in a single directory (possibly stored in a zip file)
781 that contribute to a namespace package, as defined in :pep:`420`.
782
Christian Heimesd8654cf2007-12-02 15:22:16 +0000783 positional argument
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800784 See :term:`argument`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000785
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000786 provisional API
787 A provisional API is one which has been deliberately excluded from
Barry Warsawd7d21942012-07-29 16:36:17 -0400788 the standard library's backwards compatibility guarantees. While major
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000789 changes to such interfaces are not expected, as long as they are marked
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300790 provisional, backwards incompatible changes (up to and including removal
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000791 of the interface) may occur if deemed necessary by core developers. Such
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300792 changes will not be made gratuitously -- they will occur only if serious
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000793 fundamental flaws are uncovered that were missed prior to the inclusion
794 of the API.
795
796 Even for provisional APIs, backwards incompatible changes are seen as
797 a "solution of last resort" - every attempt will still be made to find
798 a backwards compatible resolution to any identified problems.
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300799
Barry Warsawd7d21942012-07-29 16:36:17 -0400800 This process allows the standard library to continue to evolve over
801 time, without locking in problematic design errors for extended periods
802 of time. See :pep:`411` for more details.
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300803
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000804 provisional package
805 See :term:`provisional API`.
806
Guido van Rossumf10aa982007-08-17 18:30:38 +0000807 Python 3000
Barry Warsawd7d21942012-07-29 16:36:17 -0400808 Nickname for the Python 3.x release line (coined long ago when the
809 release of version 3 was something in the distant future.) This is also
Benjamin Peterson1e2f0502008-05-26 12:52:02 +0000810 abbreviated "Py3k".
Guido van Rossumf10aa982007-08-17 18:30:38 +0000811
Christian Heimesd8654cf2007-12-02 15:22:16 +0000812 Pythonic
Benjamin Peterson5478b472008-09-17 22:25:09 +0000813 An idea or piece of code which closely follows the most common idioms
814 of the Python language, rather than implementing code using concepts
815 common to other languages. For example, a common idiom in Python is
816 to loop over all elements of an iterable using a :keyword:`for`
817 statement. Many other languages don't have this type of construct, so
818 people unfamiliar with Python sometimes use a numerical counter instead::
Georg Brandl48310cd2009-01-03 21:18:54 +0000819
Christian Heimesd8654cf2007-12-02 15:22:16 +0000820 for i in range(len(food)):
Georg Brandla09ca382007-12-02 18:20:12 +0000821 print(food[i])
Christian Heimesd8654cf2007-12-02 15:22:16 +0000822
823 As opposed to the cleaner, Pythonic method::
824
825 for piece in food:
Georg Brandla09ca382007-12-02 18:20:12 +0000826 print(piece)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000827
Antoine Pitrou86a36b52011-11-25 18:56:07 +0100828 qualified name
829 A dotted name showing the "path" from a module's global scope to a
830 class, function or method defined in that module, as defined in
831 :pep:`3155`. For top-level functions and classes, the qualified name
832 is the same as the object's name::
833
834 >>> class C:
835 ... class D:
836 ... def meth(self):
837 ... pass
838 ...
839 >>> C.__qualname__
840 'C'
841 >>> C.D.__qualname__
842 'C.D'
843 >>> C.D.meth.__qualname__
844 'C.D.meth'
845
Barry Warsawd7d21942012-07-29 16:36:17 -0400846 When used to refer to modules, the *fully qualified name* means the
847 entire dotted path to the module, including any parent packages,
848 e.g. ``email.mime.text``::
849
850 >>> import email.mime.text
851 >>> email.mime.text.__name__
852 'email.mime.text'
853
Guido van Rossumf10aa982007-08-17 18:30:38 +0000854 reference count
Benjamin Peterson5478b472008-09-17 22:25:09 +0000855 The number of references to an object. When the reference count of an
856 object drops to zero, it is deallocated. Reference counting is
857 generally not visible to Python code, but it is a key element of the
858 :term:`CPython` implementation. The :mod:`sys` module defines a
Georg Brandlede6c2a2010-01-05 10:22:04 +0000859 :func:`~sys.getrefcount` function that programmers can call to return the
Benjamin Peterson5478b472008-09-17 22:25:09 +0000860 reference count for a particular object.
861
Barry Warsawd7d21942012-07-29 16:36:17 -0400862 regular package
863 A traditional :term:`package`, such as a directory containing an
864 ``__init__.py`` file.
865
Georg Brandlbcce1252013-10-08 08:06:18 +0200866 See also :term:`namespace package`.
867
Guido van Rossumf10aa982007-08-17 18:30:38 +0000868 __slots__
Georg Brandl85eb8c12007-08-31 16:33:38 +0000869 A declaration inside a class that saves memory by pre-declaring space for
870 instance attributes and eliminating instance dictionaries. Though
871 popular, the technique is somewhat tricky to get right and is best
872 reserved for rare cases where there are large numbers of instances in a
873 memory-critical application.
Georg Brandl48310cd2009-01-03 21:18:54 +0000874
Guido van Rossumf10aa982007-08-17 18:30:38 +0000875 sequence
876 An :term:`iterable` which supports efficient element access using integer
Benjamin Peterson5478b472008-09-17 22:25:09 +0000877 indices via the :meth:`__getitem__` special method and defines a
Andrew Svetlov8cf1cc42012-10-05 13:26:10 +0300878 :meth:`__len__` method that returns the length of the sequence.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000879 Some built-in sequence types are :class:`list`, :class:`str`,
Georg Brandl2ae8ac22009-02-05 10:40:48 +0000880 :class:`tuple`, and :class:`bytes`. Note that :class:`dict` also
Guido van Rossumf10aa982007-08-17 18:30:38 +0000881 supports :meth:`__getitem__` and :meth:`__len__`, but is considered a
882 mapping rather than a sequence because the lookups use arbitrary
883 :term:`immutable` keys rather than integers.
884
Andrew Kuchlingcb3ff442014-02-15 17:05:26 -0500885 The :class:`collections.abc.Sequence` abstract base class
886 defines a much richer interface that goes beyond just
887 :meth:`__getitem__` and :meth:`__len__`, adding :meth:`count`,
888 :meth:`index`, :meth:`__contains__`, and
889 :meth:`__reversed__`. Types that implement this expanded
890 interface can be registered explicitly using
891 :func:`~abc.register`.
892
Łukasz Langafdcf2b72013-06-07 22:54:03 +0200893 single dispatch
894 A form of :term:`generic function` dispatch where the implementation is
895 chosen based on the type of a single argument.
896
Christian Heimesd8654cf2007-12-02 15:22:16 +0000897 slice
Georg Brandlc6fe37b2007-12-03 21:07:25 +0000898 An object usually containing a portion of a :term:`sequence`. A slice is
Christian Heimesd8654cf2007-12-02 15:22:16 +0000899 created using the subscript notation, ``[]`` with colons between numbers
900 when several are given, such as in ``variable_name[1:3:5]``. The bracket
Georg Brandla09ca382007-12-02 18:20:12 +0000901 (subscript) notation uses :class:`slice` objects internally.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000902
Georg Brandlaf265f42008-12-07 15:06:20 +0000903 special method
904 A method that is called implicitly by Python to execute a certain
905 operation on a type, such as addition. Such methods have names starting
906 and ending with double underscores. Special methods are documented in
907 :ref:`specialnames`.
908
Christian Heimesd8654cf2007-12-02 15:22:16 +0000909 statement
910 A statement is part of a suite (a "block" of code). A statement is either
Georg Brandl60e602d2013-10-06 11:57:13 +0200911 an :term:`expression` or one of several constructs with a keyword, such
Georg Brandla09ca382007-12-02 18:20:12 +0000912 as :keyword:`if`, :keyword:`while` or :keyword:`for`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000913
Benjamin Peterson82f614b2011-04-20 18:27:32 -0500914 struct sequence
Florent Xiclunaf8240d62011-11-11 19:58:53 +0100915 A tuple with named elements. Struct sequences expose an interface similar
Benjamin Peterson82f614b2011-04-20 18:27:32 -0500916 to :term:`named tuple` in that elements can either be accessed either by
917 index or as an attribute. However, they do not have any of the named tuple
918 methods like :meth:`~collections.somenamedtuple._make` or
919 :meth:`~collections.somenamedtuple._asdict`. Examples of struct sequences
920 include :data:`sys.float_info` and the return value of :func:`os.stat`.
921
Nick Coghlanb9fdb7a2015-01-07 00:22:00 +1000922 text encoding
923 A codec which encodes Unicode strings to bytes.
924
Antoine Pitroudd799d22013-12-05 23:46:32 +0100925 text file
926 A :term:`file object` able to read and write :class:`str` objects.
927 Often, a text file actually accesses a byte-oriented datastream
Nick Coghlanb9fdb7a2015-01-07 00:22:00 +1000928 and handles the :term:`text encoding` automatically.
Antoine Pitroudd799d22013-12-05 23:46:32 +0100929
930 .. seealso::
931 A :term:`binary file` reads and write :class:`bytes` objects.
932
Benjamin Peterson5478b472008-09-17 22:25:09 +0000933 triple-quoted string
934 A string which is bound by three instances of either a quotation mark
935 (") or an apostrophe ('). While they don't provide any functionality
936 not available with single-quoted strings, they are useful for a number
937 of reasons. They allow you to include unescaped single and double
938 quotes within a string and they can span multiple lines without the
939 use of the continuation character, making them especially useful when
940 writing docstrings.
941
Guido van Rossumf10aa982007-08-17 18:30:38 +0000942 type
943 The type of a Python object determines what kind of object it is; every
944 object has a type. An object's type is accessible as its
Serhiy Storchaka0d196ed2013-10-09 14:02:31 +0300945 :attr:`~instance.__class__` attribute or can be retrieved with
946 ``type(obj)``.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000947
R David Murray1b00f252012-08-15 10:43:58 -0400948 universal newlines
949 A manner of interpreting text streams in which all of the following are
950 recognized as ending a line: the Unix end-of-line convention ``'\n'``,
951 the Windows convention ``'\r\n'``, and the old Macintosh convention
952 ``'\r'``. See :pep:`278` and :pep:`3116`, as well as
Terry Jan Reedy004e8702014-08-23 18:28:44 -0400953 :func:`bytes.splitlines` for an additional use.
R David Murray1b00f252012-08-15 10:43:58 -0400954
Nick Coghlan1d520962014-09-06 20:38:23 +1000955 virtual environment
956 A cooperatively isolated runtime environment that allows Python users
957 and applications to install and upgrade Python distribution packages
958 without interfering with the behaviour of other Python applications
959 running on the same system.
960
Martin Panterd21e0b52015-10-10 10:36:22 +0000961 See also :ref:`scripts-pyvenv`.
Nick Coghlan1d520962014-09-06 20:38:23 +1000962
Benjamin Peterson5478b472008-09-17 22:25:09 +0000963 virtual machine
964 A computer defined entirely in software. Python's virtual machine
965 executes the :term:`bytecode` emitted by the bytecode compiler.
Georg Brandl48310cd2009-01-03 21:18:54 +0000966
Guido van Rossumf10aa982007-08-17 18:30:38 +0000967 Zen of Python
968 Listing of Python design principles and philosophies that are helpful in
969 understanding and using the language. The listing can be found by typing
970 "``import this``" at the interactive prompt.