blob: 846c01ae49570ca28fc487a4e35c9d333b99d32e [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.
79 Must return an :term:`awaitable` from its :meth:`__aiter__` method,
80 which should in turn be resolved in an :term:`asynchronous iterator`
81 object. Introduced by :pep:`492`.
82
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040083 asynchronous iterator
84 An object that implements :meth:`__aiter__` and :meth:`__anext__`
85 methods, that must return :term:`awaitable` objects.
86 :keyword:`async for` resolves awaitable returned from asynchronous
87 iterator's :meth:`__anext__` method until it raises
88 :exc:`StopAsyncIteration` exception. Introduced by :pep:`492`.
89
Benjamin Peterson5478b472008-09-17 22:25:09 +000090 attribute
91 A value associated with an object which is referenced by name using
92 dotted expressions. For example, if an object *o* has an attribute
93 *a* it would be referenced as *o.a*.
Georg Brandl48310cd2009-01-03 21:18:54 +000094
Yury Selivanovf3e40fa2015-05-21 11:50:30 -040095 awaitable
96 An object that can be used in an :keyword:`await` expression. Can be
97 a :term:`coroutine` or an object with an :meth:`__await__` method.
98 See also :pep:`492`.
99
Guido van Rossumf10aa982007-08-17 18:30:38 +0000100 BDFL
101 Benevolent Dictator For Life, a.k.a. `Guido van Rossum
Georg Brandle73778c2014-10-29 08:36:35 +0100102 <https://www.python.org/~guido/>`_, Python's creator.
Georg Brandl48310cd2009-01-03 21:18:54 +0000103
Antoine Pitroudd799d22013-12-05 23:46:32 +0100104 binary file
105 A :term:`file object` able to read and write
106 :term:`bytes-like objects <bytes-like object>`.
107
108 .. seealso::
109 A :term:`text file` reads and writes :class:`str` objects.
110
Ezio Melottiaa54e2f2013-04-30 23:33:31 +0300111 bytes-like object
Stefan Krah70e543b2015-08-08 14:33:28 +0200112 An object that supports the :ref:`bufferobjects` and can
113 export a C-:term:`contiguous` buffer. This includes all :class:`bytes`,
114 :class:`bytearray`, and :class:`array.array` objects, as well as many
115 common :class:`memoryview` objects. Bytes-like objects can
Larry Hastingsab792ac2015-04-13 11:30:56 -0400116 be used for various operations that work with binary data; these include
117 compression, saving to a binary file, and sending over a socket.
118
119 Some operations need the binary data to be mutable. The documentation
120 often refers to these as "read-write bytes-like objects". Example
121 mutable buffer objects include :class:`bytearray` and a
122 :class:`memoryview` of a :class:`bytearray`.
123 Other operations require the binary data to be stored in
124 immutable objects ("read-only bytes-like objects"); examples
125 of these include :class:`bytes` and a :class:`memoryview`
126 of a :class:`bytes` object.
Ezio Melottiaa54e2f2013-04-30 23:33:31 +0300127
Georg Brandl9afde1c2007-11-01 20:32:30 +0000128 bytecode
129 Python source code is compiled into bytecode, the internal representation
Brett Cannon8315fd12010-07-02 22:03:00 +0000130 of a Python program in the CPython interpreter. The bytecode is also
131 cached in ``.pyc`` and ``.pyo`` files so that executing the same file is
132 faster the second time (recompilation from source to bytecode can be
133 avoided). This "intermediate language" is said to run on a
134 :term:`virtual machine` that executes the machine code corresponding to
135 each bytecode. Do note that bytecodes are not expected to work between
136 different Python virtual machines, nor to be stable between Python
137 releases.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000138
Georg Brandl2cb72d32010-07-03 10:26:54 +0000139 A list of bytecode instructions can be found in the documentation for
140 :ref:`the dis module <bytecodes>`.
141
Benjamin Peterson5478b472008-09-17 22:25:09 +0000142 class
143 A template for creating user-defined objects. Class definitions
144 normally contain method definitions which operate on instances of the
145 class.
Georg Brandl48310cd2009-01-03 21:18:54 +0000146
Benjamin Peterson5478b472008-09-17 22:25:09 +0000147 coercion
148 The implicit conversion of an instance of one type to another during an
149 operation which involves two arguments of the same type. For example,
150 ``int(3.15)`` converts the floating point number to the integer ``3``, but
151 in ``3+4.5``, each argument is of a different type (one int, one float),
152 and both must be converted to the same type before they can be added or it
Benjamin Peterson2d718222008-11-21 00:25:02 +0000153 will raise a ``TypeError``. Without coercion, all arguments of even
Benjamin Peterson5478b472008-09-17 22:25:09 +0000154 compatible types would have to be normalized to the same value by the
155 programmer, e.g., ``float(3)+4.5`` rather than just ``3+4.5``.
Georg Brandl48310cd2009-01-03 21:18:54 +0000156
Guido van Rossumf10aa982007-08-17 18:30:38 +0000157 complex number
158 An extension of the familiar real number system in which all numbers are
159 expressed as a sum of a real part and an imaginary part. Imaginary
160 numbers are real multiples of the imaginary unit (the square root of
161 ``-1``), often written ``i`` in mathematics or ``j`` in
Georg Brandl22b34312009-07-26 14:54:51 +0000162 engineering. Python has built-in support for complex numbers, which are
Guido van Rossumf10aa982007-08-17 18:30:38 +0000163 written with this latter notation; the imaginary part is written with a
164 ``j`` suffix, e.g., ``3+1j``. To get access to complex equivalents of the
165 :mod:`math` module, use :mod:`cmath`. Use of complex numbers is a fairly
166 advanced mathematical feature. If you're not aware of a need for them,
167 it's almost certain you can safely ignore them.
Georg Brandl48310cd2009-01-03 21:18:54 +0000168
Christian Heimes895627f2007-12-08 17:28:33 +0000169 context manager
Benjamin Peterson5478b472008-09-17 22:25:09 +0000170 An object which controls the environment seen in a :keyword:`with`
Christian Heimes895627f2007-12-08 17:28:33 +0000171 statement by defining :meth:`__enter__` and :meth:`__exit__` methods.
172 See :pep:`343`.
173
Stefan Krah70e543b2015-08-08 14:33:28 +0200174 contiguous
175 .. index:: C-contiguous, Fortran contiguous
176
177 A buffer is considered contiguous exactly if it is either
178 *C-contiguous* or *Fortran contiguous*. Zero-dimensional buffers are
179 C and Fortran contiguous. In one-dimensional arrays, the items
180 must be layed out in memory next to each other, in order of
181 increasing indexes starting from zero. In multidimensional
182 C-contiguous arrays, the last index varies the fastest when
183 visiting items in order of memory address. However, in
184 Fortran contiguous arrays, the first index varies the fastest.
185
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400186 coroutine
187 Coroutines is a more generalized form of subroutines. Subroutines are
Yury Selivanov66f88282015-06-24 11:04:15 -0400188 entered at one point and exited at another point. Coroutines can be
189 entered, exited, and resumed at many different points. They can be
190 implemented with the :keyword:`async def` statement. See also
191 :pep:`492`.
192
193 coroutine function
194 A function which returns a :term:`coroutine` object. A coroutine
195 function may be defined with the :keyword:`async def` statement,
196 and may contain :keyword:`await`, :keyword:`async for`, and
197 :keyword:`async with` keywords. These were introduced
198 by :pep:`492`.
Yury Selivanovf3e40fa2015-05-21 11:50:30 -0400199
Benjamin Peterson5478b472008-09-17 22:25:09 +0000200 CPython
Antoine Pitrou00342812011-01-06 16:31:28 +0000201 The canonical implementation of the Python programming language, as
Georg Brandle73778c2014-10-29 08:36:35 +0100202 distributed on `python.org <https://www.python.org>`_. The term "CPython"
Antoine Pitrou00342812011-01-06 16:31:28 +0000203 is used when necessary to distinguish this implementation from others
204 such as Jython or IronPython.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000205
Christian Heimesd8654cf2007-12-02 15:22:16 +0000206 decorator
207 A function returning another function, usually applied as a function
208 transformation using the ``@wrapper`` syntax. Common examples for
209 decorators are :func:`classmethod` and :func:`staticmethod`.
210
211 The decorator syntax is merely syntactic sugar, the following two
212 function definitions are semantically equivalent::
213
214 def f(...):
215 ...
216 f = staticmethod(f)
217
218 @staticmethod
219 def f(...):
220 ...
221
Georg Brandlaf265f42008-12-07 15:06:20 +0000222 The same concept exists for classes, but is less commonly used there. See
223 the documentation for :ref:`function definitions <function>` and
224 :ref:`class definitions <class>` for more about decorators.
Georg Brandla09ca382007-12-02 18:20:12 +0000225
Guido van Rossumf10aa982007-08-17 18:30:38 +0000226 descriptor
Benjamin Peterson5478b472008-09-17 22:25:09 +0000227 Any object which defines the methods :meth:`__get__`, :meth:`__set__`, or
Georg Brandl85eb8c12007-08-31 16:33:38 +0000228 :meth:`__delete__`. When a class attribute is a descriptor, its special
Georg Brandl9afde1c2007-11-01 20:32:30 +0000229 binding behavior is triggered upon attribute lookup. Normally, using
230 *a.b* to get, set or delete an attribute looks up the object named *b* in
231 the class dictionary for *a*, but if *b* is a descriptor, the respective
232 descriptor method gets called. Understanding descriptors is a key to a
233 deep understanding of Python because they are the basis for many features
234 including functions, methods, properties, class methods, static methods,
235 and reference to super classes.
236
237 For more information about descriptors' methods, see :ref:`descriptors`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000238
Guido van Rossumf10aa982007-08-17 18:30:38 +0000239 dictionary
Senthil Kumaran6080db72012-03-12 10:05:34 -0700240 An associative array, where arbitrary keys are mapped to values. The
241 keys can be any object with :meth:`__hash__` and :meth:`__eq__` methods.
242 Called a hash in Perl.
Georg Brandl3dbca812008-07-23 16:10:53 +0000243
244 docstring
Benjamin Peterson5478b472008-09-17 22:25:09 +0000245 A string literal which appears as the first expression in a class,
246 function or module. While ignored when the suite is executed, it is
247 recognized by the compiler and put into the :attr:`__doc__` attribute
248 of the enclosing class, function or module. Since it is available via
249 introspection, it is the canonical place for documentation of the
Georg Brandl3dbca812008-07-23 16:10:53 +0000250 object.
Georg Brandl48310cd2009-01-03 21:18:54 +0000251
252 duck-typing
Georg Brandl73b1c7b2010-07-10 10:39:57 +0000253 A programming style which does not look at an object's type to determine
254 if it has the right interface; instead, the method or attribute is simply
255 called or used ("If it looks like a duck and quacks like a duck, it
Guido van Rossumf10aa982007-08-17 18:30:38 +0000256 must be a duck.") By emphasizing interfaces rather than specific types,
257 well-designed code improves its flexibility by allowing polymorphic
258 substitution. Duck-typing avoids tests using :func:`type` or
Georg Brandl8a1c2542010-07-11 08:36:20 +0000259 :func:`isinstance`. (Note, however, that duck-typing can be complemented
Éric Araujo0519b092011-08-19 00:39:19 +0200260 with :term:`abstract base classes <abstract base class>`.) Instead, it
261 typically employs :func:`hasattr` tests or :term:`EAFP` programming.
Georg Brandl48310cd2009-01-03 21:18:54 +0000262
Guido van Rossumf10aa982007-08-17 18:30:38 +0000263 EAFP
264 Easier to ask for forgiveness than permission. This common Python coding
265 style assumes the existence of valid keys or attributes and catches
266 exceptions if the assumption proves false. This clean and fast style is
267 characterized by the presence of many :keyword:`try` and :keyword:`except`
Georg Brandl48310cd2009-01-03 21:18:54 +0000268 statements. The technique contrasts with the :term:`LBYL` style
Benjamin Peterson5478b472008-09-17 22:25:09 +0000269 common to many other languages such as C.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000270
Christian Heimesd8654cf2007-12-02 15:22:16 +0000271 expression
272 A piece of syntax which can be evaluated to some value. In other words,
Benjamin Peterson5478b472008-09-17 22:25:09 +0000273 an expression is an accumulation of expression elements like literals,
274 names, attribute access, operators or function calls which all return a
275 value. In contrast to many other languages, not all language constructs
276 are expressions. There are also :term:`statement`\s which cannot be used
277 as expressions, such as :keyword:`if`. Assignments are also statements,
278 not expressions.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000279
Guido van Rossumf10aa982007-08-17 18:30:38 +0000280 extension module
Georg Brandl9d9848e2010-12-28 11:48:53 +0000281 A module written in C or C++, using Python's C API to interact with the
282 core and with user code.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000283
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000284 file object
285 An object exposing a file-oriented API (with methods such as
Georg Brandl9d9848e2010-12-28 11:48:53 +0000286 :meth:`read()` or :meth:`write()`) to an underlying resource. Depending
287 on the way it was created, a file object can mediate access to a real
Eli Benderskydbaedb82012-03-30 11:02:05 +0300288 on-disk file or to another type of storage or communication device
Georg Brandl9d9848e2010-12-28 11:48:53 +0000289 (for example standard input/output, in-memory buffers, sockets, pipes,
290 etc.). File objects are also called :dfn:`file-like objects` or
291 :dfn:`streams`.
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000292
Antoine Pitroudd799d22013-12-05 23:46:32 +0100293 There are actually three categories of file objects: raw
294 :term:`binary files <binary file>`, buffered
295 :term:`binary files <binary file>` and :term:`text files <text file>`.
296 Their interfaces are defined in the :mod:`io` module. The canonical
297 way to create a file object is by using the :func:`open` function.
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000298
299 file-like object
300 A synonym for :term:`file object`.
301
Brett Cannon51d4aab2009-01-25 04:21:39 +0000302 finder
303 An object that tries to find the :term:`loader` for a module. It must
Barry Warsawd7d21942012-07-29 16:36:17 -0400304 implement either a method named :meth:`find_loader` or a method named
305 :meth:`find_module`. See :pep:`302` and :pep:`420` for details and
306 :class:`importlib.abc.Finder` for an :term:`abstract base class`.
Brett Cannon51d4aab2009-01-25 04:21:39 +0000307
Benjamin Peterson2d718222008-11-21 00:25:02 +0000308 floor division
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000309 Mathematical division that rounds down to nearest integer. The floor
310 division operator is ``//``. For example, the expression ``11 // 4``
311 evaluates to ``2`` in contrast to the ``2.75`` returned by float true
312 division. Note that ``(-11) // 4`` is ``-3`` because that is ``-2.75``
313 rounded *downward*. See :pep:`238`.
Benjamin Peterson2d718222008-11-21 00:25:02 +0000314
Christian Heimesd8654cf2007-12-02 15:22:16 +0000315 function
316 A series of statements which returns some value to a caller. It can also
Chris Jerdonekb4309942012-12-25 14:54:44 -0800317 be passed zero or more :term:`arguments <argument>` which may be used in
318 the execution of the body. See also :term:`parameter`, :term:`method`,
319 and the :ref:`function` section.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000320
R David Murray25cd0912013-05-06 12:58:16 -0400321 function annotation
322 An arbitrary metadata value associated with a function parameter or return
323 value. Its syntax is explained in section :ref:`function`. Annotations
324 may be accessed via the :attr:`__annotations__` special attribute of a
325 function object.
326
327 Python itself does not assign any particular meaning to function
328 annotations. They are intended to be interpreted by third-party libraries
329 or tools. See :pep:`3107`, which describes some of their potential uses.
330
Guido van Rossumf10aa982007-08-17 18:30:38 +0000331 __future__
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000332 A pseudo-module which programmers can use to enable new language features
Benjamin Peterson2d718222008-11-21 00:25:02 +0000333 which are not compatible with the current interpreter.
334
335 By importing the :mod:`__future__` module and evaluating its variables,
336 you can see when a new feature was first added to the language and when it
337 becomes the default::
Georg Brandl48310cd2009-01-03 21:18:54 +0000338
Guido van Rossumf10aa982007-08-17 18:30:38 +0000339 >>> import __future__
340 >>> __future__.division
341 _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
342
343 garbage collection
344 The process of freeing memory when it is not used anymore. Python
345 performs garbage collection via reference counting and a cyclic garbage
346 collector that is able to detect and break reference cycles.
Georg Brandl48310cd2009-01-03 21:18:54 +0000347
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000348 .. index:: single: generator
349
Guido van Rossumf10aa982007-08-17 18:30:38 +0000350 generator
Yury Selivanov5376ba92015-06-22 12:19:30 -0400351 A function which returns a :term:`generator iterator`. It looks like a
352 normal function except that it contains :keyword:`yield` expressions
353 for producing a series of values usable in a for-loop or that can be
354 retrieved one at a time with the :func:`next` function.
355
356 Usually refers to a generator function, but may refer to a
357 *generator iterator* in some contexts. In cases where the intended
358 meaning isn't clear, using the full terms avoids ambiguity.
359
360 generator iterator
361 An object created by a :term:`generator` function.
362
363 Each :keyword:`yield` temporarily suspends processing, remembering the
364 location execution state (including local variables and pending
365 try-statements). When the *generator iterator* resumes, it picks-up where
366 it left-off (in contrast to functions which start fresh on every
367 invocation).
Georg Brandl48310cd2009-01-03 21:18:54 +0000368
Guido van Rossumf10aa982007-08-17 18:30:38 +0000369 .. index:: single: generator expression
Georg Brandl48310cd2009-01-03 21:18:54 +0000370
Guido van Rossumf10aa982007-08-17 18:30:38 +0000371 generator expression
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000372 An expression that returns an iterator. It looks like a normal expression
Guido van Rossumf10aa982007-08-17 18:30:38 +0000373 followed by a :keyword:`for` expression defining a loop variable, range,
374 and an optional :keyword:`if` expression. The combined expression
375 generates values for an enclosing function::
Georg Brandl48310cd2009-01-03 21:18:54 +0000376
Guido van Rossumf10aa982007-08-17 18:30:38 +0000377 >>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
378 285
Georg Brandl48310cd2009-01-03 21:18:54 +0000379
Łukasz Langafdcf2b72013-06-07 22:54:03 +0200380 generic function
381 A function composed of multiple functions implementing the same operation
382 for different types. Which implementation should be used during a call is
383 determined by the dispatch algorithm.
384
385 See also the :term:`single dispatch` glossary entry, the
386 :func:`functools.singledispatch` decorator, and :pep:`443`.
387
388
Guido van Rossumf10aa982007-08-17 18:30:38 +0000389 GIL
390 See :term:`global interpreter lock`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000391
Guido van Rossumf10aa982007-08-17 18:30:38 +0000392 global interpreter lock
Antoine Pitrou00342812011-01-06 16:31:28 +0000393 The mechanism used by the :term:`CPython` interpreter to assure that
394 only one thread executes Python :term:`bytecode` at a time.
395 This simplifies the CPython implementation by making the object model
396 (including critical built-in types such as :class:`dict`) implicitly
397 safe against concurrent access. Locking the entire interpreter
398 makes it easier for the interpreter to be multi-threaded, at the
399 expense of much of the parallelism afforded by multi-processor
400 machines.
401
402 However, some extension modules, either standard or third-party,
403 are designed so as to release the GIL when doing computationally-intensive
404 tasks such as compression or hashing. Also, the GIL is always released
405 when doing I/O.
406
407 Past efforts to create a "free-threaded" interpreter (one which locks
408 shared data at a much finer granularity) have not been successful
409 because performance suffered in the common single-processor case. It
410 is believed that overcoming this performance issue would make the
411 implementation much more complicated and therefore costlier to maintain.
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000412
413 hashable
Benjamin Peterson5478b472008-09-17 22:25:09 +0000414 An object is *hashable* if it has a hash value which never changes during
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000415 its lifetime (it needs a :meth:`__hash__` method), and can be compared to
Georg Brandl05f5ab72008-09-24 09:11:47 +0000416 other objects (it needs an :meth:`__eq__` method). Hashable objects which
417 compare equal must have the same hash value.
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000418
419 Hashability makes an object usable as a dictionary key and a set member,
420 because these data structures use the hash value internally.
421
Benjamin Peterson5478b472008-09-17 22:25:09 +0000422 All of Python's immutable built-in objects are hashable, while no mutable
423 containers (such as lists or dictionaries) are. Objects which are
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000424 instances of user-defined classes are hashable by default; they all
Georg Brandl4dd27a32014-10-06 16:45:23 +0200425 compare unequal (except with themselves), and their hash value is derived
426 from their :func:`id`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000427
Guido van Rossumf10aa982007-08-17 18:30:38 +0000428 IDLE
429 An Integrated Development Environment for Python. IDLE is a basic editor
Benjamin Peterson5478b472008-09-17 22:25:09 +0000430 and interpreter environment which ships with the standard distribution of
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000431 Python.
Georg Brandl48310cd2009-01-03 21:18:54 +0000432
Guido van Rossumf10aa982007-08-17 18:30:38 +0000433 immutable
Benjamin Peterson5478b472008-09-17 22:25:09 +0000434 An object with a fixed value. Immutable objects include numbers, strings and
435 tuples. Such an object cannot be altered. A new object has to
Guido van Rossumf10aa982007-08-17 18:30:38 +0000436 be created if a different value has to be stored. They play an important
437 role in places where a constant hash value is needed, for example as a key
438 in a dictionary.
Benjamin Peterson2d718222008-11-21 00:25:02 +0000439
Barry Warsawdadebab2012-07-31 16:03:09 -0400440 import path
441 A list of locations (or :term:`path entries <path entry>`) that are
Nick Coghlan1685db02012-08-20 13:49:08 +1000442 searched by the :term:`path based finder` for modules to import. During
Barry Warsawdadebab2012-07-31 16:03:09 -0400443 import, this list of locations usually comes from :data:`sys.path`, but
444 for subpackages it may also come from the parent package's ``__path__``
445 attribute.
446
Barry Warsawd7d21942012-07-29 16:36:17 -0400447 importing
448 The process by which Python code in one module is made available to
449 Python code in another module.
450
Brett Cannon51d4aab2009-01-25 04:21:39 +0000451 importer
452 An object that both finds and loads a module; both a
453 :term:`finder` and :term:`loader` object.
454
Guido van Rossumf10aa982007-08-17 18:30:38 +0000455 interactive
Benjamin Peterson5478b472008-09-17 22:25:09 +0000456 Python has an interactive interpreter which means you can enter
457 statements and expressions at the interpreter prompt, immediately
458 execute them and see their results. Just launch ``python`` with no
459 arguments (possibly by selecting it from your computer's main
460 menu). It is a very powerful way to test out new ideas or inspect
461 modules and packages (remember ``help(x)``).
Georg Brandl48310cd2009-01-03 21:18:54 +0000462
Guido van Rossumf10aa982007-08-17 18:30:38 +0000463 interpreted
Benjamin Peterson5478b472008-09-17 22:25:09 +0000464 Python is an interpreted language, as opposed to a compiled one,
465 though the distinction can be blurry because of the presence of the
466 bytecode compiler. This means that source files can be run directly
467 without explicitly creating an executable which is then run.
468 Interpreted languages typically have a shorter development/debug cycle
469 than compiled ones, though their programs generally also run more
470 slowly. See also :term:`interactive`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000471
Antoine Pitrou5db1bb82014-12-07 01:28:27 +0100472 interpreter shutdown
473 When asked to shut down, the Python interpreter enters a special phase
474 where it gradually releases all allocated resources, such as modules
475 and various critical internal structures. It also makes several calls
476 to the :term:`garbage collector <garbage collection>`. This can trigger
477 the execution of code in user-defined destructors or weakref callbacks.
478 Code executed during the shutdown phase can encounter various
479 exceptions as the resources it relies on may not function anymore
480 (common examples are library modules or the warnings machinery).
481
482 The main reason for interpreter shutdown is that the ``__main__`` module
483 or the script being run has finished executing.
484
Guido van Rossumf10aa982007-08-17 18:30:38 +0000485 iterable
Ezio Melottid581fff2013-01-02 22:29:09 +0200486 An object capable of returning its members one at a time. Examples of
487 iterables include all sequence types (such as :class:`list`, :class:`str`,
488 and :class:`tuple`) and some non-sequence types like :class:`dict`,
489 :term:`file objects <file object>`, and objects of any classes you define
490 with an :meth:`__iter__` or :meth:`__getitem__` method. Iterables can be
491 used in a :keyword:`for` loop and in many other places where a sequence is
492 needed (:func:`zip`, :func:`map`, ...). When an iterable object is passed
493 as an argument to the built-in function :func:`iter`, it returns an
494 iterator for the object. This iterator is good for one pass over the set
495 of values. When using iterables, it is usually not necessary to call
496 :func:`iter` or deal with iterator objects yourself. The ``for``
Guido van Rossumf10aa982007-08-17 18:30:38 +0000497 statement does that automatically for you, creating a temporary unnamed
498 variable to hold the iterator for the duration of the loop. See also
499 :term:`iterator`, :term:`sequence`, and :term:`generator`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000500
Guido van Rossumf10aa982007-08-17 18:30:38 +0000501 iterator
502 An object representing a stream of data. Repeated calls to the iterator's
Ezio Melotti7fa82222012-10-12 13:42:08 +0300503 :meth:`~iterator.__next__` method (or passing it to the built-in function
Georg Brandlb30f3302011-01-06 09:23:56 +0000504 :func:`next`) return successive items in the stream. When no more data
505 are available a :exc:`StopIteration` exception is raised instead. At this
Benjamin Petersone7c78b22008-07-03 20:28:26 +0000506 point, the iterator object is exhausted and any further calls to its
Georg Brandlb30f3302011-01-06 09:23:56 +0000507 :meth:`__next__` method just raise :exc:`StopIteration` again. Iterators
508 are required to have an :meth:`__iter__` method that returns the iterator
Guido van Rossumf10aa982007-08-17 18:30:38 +0000509 object itself so every iterator is also iterable and may be used in most
510 places where other iterables are accepted. One notable exception is code
Benjamin Peterson5478b472008-09-17 22:25:09 +0000511 which attempts multiple iteration passes. A container object (such as a
Guido van Rossumf10aa982007-08-17 18:30:38 +0000512 :class:`list`) produces a fresh new iterator each time you pass it to the
513 :func:`iter` function or use it in a :keyword:`for` loop. Attempting this
514 with an iterator will just return the same exhausted iterator object used
515 in the previous iteration pass, making it appear like an empty container.
Georg Brandl48310cd2009-01-03 21:18:54 +0000516
Georg Brandl9afde1c2007-11-01 20:32:30 +0000517 More information can be found in :ref:`typeiter`.
518
Georg Brandlc275e152010-11-05 07:10:41 +0000519 key function
520 A key function or collation function is a callable that returns a value
521 used for sorting or ordering. For example, :func:`locale.strxfrm` is
522 used to produce a sort key that is aware of locale specific sort
523 conventions.
524
525 A number of tools in Python accept key functions to control how elements
526 are ordered or grouped. They include :func:`min`, :func:`max`,
Raymond Hettinger35db4392014-05-30 02:28:36 -0700527 :func:`sorted`, :meth:`list.sort`, :func:`heapq.merge`,
528 :func:`heapq.nsmallest`, :func:`heapq.nlargest`, and
529 :func:`itertools.groupby`.
Georg Brandlc275e152010-11-05 07:10:41 +0000530
531 There are several ways to create a key function. For example. the
532 :meth:`str.lower` method can serve as a key function for case insensitive
Raymond Hettinger35db4392014-05-30 02:28:36 -0700533 sorts. Alternatively, a key function can be built from a
Georg Brandlc275e152010-11-05 07:10:41 +0000534 :keyword:`lambda` expression such as ``lambda r: (r[0], r[2])``. Also,
Sandro Tosi165a2c22012-04-01 01:50:00 +0200535 the :mod:`operator` module provides three key function constructors:
Georg Brandlc275e152010-11-05 07:10:41 +0000536 :func:`~operator.attrgetter`, :func:`~operator.itemgetter`, and
537 :func:`~operator.methodcaller`. See the :ref:`Sorting HOW TO
538 <sortinghowto>` for examples of how to create and use key functions.
539
Christian Heimesd8654cf2007-12-02 15:22:16 +0000540 keyword argument
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800541 See :term:`argument`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000542
543 lambda
544 An anonymous inline function consisting of a single :term:`expression`
545 which is evaluated when the function is called. The syntax to create
546 a lambda function is ``lambda [arguments]: expression``
547
Guido van Rossumf10aa982007-08-17 18:30:38 +0000548 LBYL
549 Look before you leap. This coding style explicitly tests for
550 pre-conditions before making calls or lookups. This style contrasts with
551 the :term:`EAFP` approach and is characterized by the presence of many
552 :keyword:`if` statements.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000553
Raymond Hettinger09f44142010-12-17 20:19:50 +0000554 In a multi-threaded environment, the LBYL approach can risk introducing a
555 race condition between "the looking" and "the leaping". For example, the
556 code, ``if key in mapping: return mapping[key]`` can fail if another
557 thread removes *key* from *mapping* after the test, but before the lookup.
558 This issue can be solved with locks or by using the EAFP approach.
559
Benjamin Peterson5478b472008-09-17 22:25:09 +0000560 list
561 A built-in Python :term:`sequence`. Despite its name it is more akin
562 to an array in other languages than to a linked list since access to
563 elements are O(1).
Georg Brandl48310cd2009-01-03 21:18:54 +0000564
Guido van Rossumf10aa982007-08-17 18:30:38 +0000565 list comprehension
Benjamin Peterson5478b472008-09-17 22:25:09 +0000566 A compact way to process all or part of the elements in a sequence and
Georg Brandlede6c2a2010-01-05 10:22:04 +0000567 return a list with the results. ``result = ['{:#04x}'.format(x) for x in
Benjamin Peterson5478b472008-09-17 22:25:09 +0000568 range(256) if x % 2 == 0]`` generates a list of strings containing
569 even hex numbers (0x..) in the range from 0 to 255. The :keyword:`if`
570 clause is optional. If omitted, all elements in ``range(256)`` are
571 processed.
Georg Brandl48310cd2009-01-03 21:18:54 +0000572
Brett Cannon51d4aab2009-01-25 04:21:39 +0000573 loader
574 An object that loads a module. It must define a method named
575 :meth:`load_module`. A loader is typically returned by a
Brett Cannone43b0602009-03-21 03:11:16 +0000576 :term:`finder`. See :pep:`302` for details and
577 :class:`importlib.abc.Loader` for an :term:`abstract base class`.
Brett Cannon51d4aab2009-01-25 04:21:39 +0000578
Guido van Rossumf10aa982007-08-17 18:30:38 +0000579 mapping
Raymond Hettingere3ee66f2011-01-08 23:44:37 +0000580 A container object that supports arbitrary key lookups and implements the
Éric Araujob8edbdf2011-09-01 05:57:12 +0200581 methods specified in the :class:`~collections.abc.Mapping` or
582 :class:`~collections.abc.MutableMapping`
Éric Araujofa088db2011-06-04 18:42:38 +0200583 :ref:`abstract base classes <collections-abstract-base-classes>`. Examples
584 include :class:`dict`, :class:`collections.defaultdict`,
Raymond Hettingere3ee66f2011-01-08 23:44:37 +0000585 :class:`collections.OrderedDict` and :class:`collections.Counter`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000586
Barry Warsawd7d21942012-07-29 16:36:17 -0400587 meta path finder
588 A finder returned by a search of :data:`sys.meta_path`. Meta path
Barry Warsawdadebab2012-07-31 16:03:09 -0400589 finders are related to, but different from :term:`path entry finders
590 <path entry finder>`.
Barry Warsawd7d21942012-07-29 16:36:17 -0400591
Guido van Rossumf10aa982007-08-17 18:30:38 +0000592 metaclass
593 The class of a class. Class definitions create a class name, a class
594 dictionary, and a list of base classes. The metaclass is responsible for
595 taking those three arguments and creating the class. Most object oriented
596 programming languages provide a default implementation. What makes Python
597 special is that it is possible to create custom metaclasses. Most users
598 never need this tool, but when the need arises, metaclasses can provide
599 powerful, elegant solutions. They have been used for logging attribute
600 access, adding thread-safety, tracking object creation, implementing
601 singletons, and many other tasks.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000602
603 More information can be found in :ref:`metaclasses`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000604
605 method
Benjamin Peterson5478b472008-09-17 22:25:09 +0000606 A function which is defined inside a class body. If called as an attribute
Christian Heimesd8654cf2007-12-02 15:22:16 +0000607 of an instance of that class, the method will get the instance object as
608 its first :term:`argument` (which is usually called ``self``).
609 See :term:`function` and :term:`nested scope`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000610
Michael Foord95fc51d2010-11-20 15:07:30 +0000611 method resolution order
612 Method Resolution Order is the order in which base classes are searched
613 for a member during lookup. See `The Python 2.3 Method Resolution Order
Georg Brandle73778c2014-10-29 08:36:35 +0100614 <https://www.python.org/download/releases/2.3/mro/>`_.
Michael Foord95fc51d2010-11-20 15:07:30 +0000615
Barry Warsawd7d21942012-07-29 16:36:17 -0400616 module
617 An object that serves as an organizational unit of Python code. Modules
Barry Warsawc1e721b2012-07-30 16:24:12 -0400618 have a namespace containing arbitrary Python objects. Modules are loaded
Barry Warsawd7d21942012-07-29 16:36:17 -0400619 into Python by the process of :term:`importing`.
620
Georg Brandlbcce1252013-10-08 08:06:18 +0200621 See also :term:`package`.
622
Eric Snowca2d8542013-12-16 23:06:52 -0700623 module spec
624 A namespace containing the import-related information used to load a
625 module.
626
Michael Foord95fc51d2010-11-20 15:07:30 +0000627 MRO
628 See :term:`method resolution order`.
629
Guido van Rossumf10aa982007-08-17 18:30:38 +0000630 mutable
631 Mutable objects can change their value but keep their :func:`id`. See
632 also :term:`immutable`.
Christian Heimes25bb7832008-01-11 16:17:00 +0000633
634 named tuple
Raymond Hettingerd04fa312009-02-04 19:45:13 +0000635 Any tuple-like class whose indexable elements are also accessible using
Christian Heimesd32ed6f2008-01-14 18:49:24 +0000636 named attributes (for example, :func:`time.localtime` returns a
637 tuple-like object where the *year* is accessible either with an
638 index such as ``t[0]`` or with a named attribute like ``t.tm_year``).
639
640 A named tuple can be a built-in type such as :class:`time.struct_time`,
641 or it can be created with a regular class definition. A full featured
642 named tuple can also be created with the factory function
643 :func:`collections.namedtuple`. The latter approach automatically
644 provides extra features such as a self-documenting representation like
645 ``Employee(name='jones', title='programmer')``.
Georg Brandl48310cd2009-01-03 21:18:54 +0000646
Guido van Rossumf10aa982007-08-17 18:30:38 +0000647 namespace
648 The place where a variable is stored. Namespaces are implemented as
Georg Brandl22b34312009-07-26 14:54:51 +0000649 dictionaries. There are the local, global and built-in namespaces as well
Guido van Rossumf10aa982007-08-17 18:30:38 +0000650 as nested namespaces in objects (in methods). Namespaces support
651 modularity by preventing naming conflicts. For instance, the functions
Serhiy Storchaka0d196ed2013-10-09 14:02:31 +0300652 :func:`builtins.open <.open>` and :func:`os.open` are distinguished by
653 their namespaces. Namespaces also aid readability and maintainability by
654 making it clear which module implements a function. For instance, writing
Éric Araujo7af8ebb2011-09-01 03:20:13 +0200655 :func:`random.seed` or :func:`itertools.islice` makes it clear that those
Guido van Rossumf10aa982007-08-17 18:30:38 +0000656 functions are implemented by the :mod:`random` and :mod:`itertools`
Benjamin Peterson5478b472008-09-17 22:25:09 +0000657 modules, respectively.
Georg Brandl48310cd2009-01-03 21:18:54 +0000658
Barry Warsawd7d21942012-07-29 16:36:17 -0400659 namespace package
660 A :pep:`420` :term:`package` which serves only as a container for
661 subpackages. Namespace packages may have no physical representation,
662 and specifically are not like a :term:`regular package` because they
663 have no ``__init__.py`` file.
664
Georg Brandlbcce1252013-10-08 08:06:18 +0200665 See also :term:`module`.
666
Guido van Rossumf10aa982007-08-17 18:30:38 +0000667 nested scope
668 The ability to refer to a variable in an enclosing definition. For
669 instance, a function defined inside another function can refer to
Benjamin Peterson927ccd22010-06-29 18:36:39 +0000670 variables in the outer function. Note that nested scopes by default work
671 only for reference and not for assignment. Local variables both read and
672 write in the innermost scope. Likewise, global variables read and write
673 to the global namespace. The :keyword:`nonlocal` allows writing to outer
674 scopes.
Georg Brandl48310cd2009-01-03 21:18:54 +0000675
Guido van Rossumf10aa982007-08-17 18:30:38 +0000676 new-style class
Georg Brandl85eb8c12007-08-31 16:33:38 +0000677 Old name for the flavor of classes now used for all class objects. In
678 earlier Python versions, only new-style classes could use Python's newer,
Serhiy Storchaka0d196ed2013-10-09 14:02:31 +0300679 versatile features like :attr:`~object.__slots__`, descriptors,
680 properties, :meth:`__getattribute__`, class methods, and static methods.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000681
Benjamin Peterson5478b472008-09-17 22:25:09 +0000682 object
683 Any data with state (attributes or value) and defined behavior
684 (methods). Also the ultimate base class of any :term:`new-style
685 class`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000686
Barry Warsawd7d21942012-07-29 16:36:17 -0400687 package
Georg Brandlbcce1252013-10-08 08:06:18 +0200688 A Python :term:`module` which can contain submodules or recursively,
Barry Warsawd7d21942012-07-29 16:36:17 -0400689 subpackages. Technically, a package is a Python module with an
690 ``__path__`` attribute.
691
Georg Brandlbcce1252013-10-08 08:06:18 +0200692 See also :term:`regular package` and :term:`namespace package`.
693
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800694 parameter
695 A named entity in a :term:`function` (or method) definition that
696 specifies an :term:`argument` (or in some cases, arguments) that the
Zachary Waree1391a02013-11-22 13:58:34 -0600697 function can accept. There are five kinds of parameter:
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800698
699 * :dfn:`positional-or-keyword`: specifies an argument that can be passed
700 either :term:`positionally <argument>` or as a :term:`keyword argument
701 <argument>`. This is the default kind of parameter, for example *foo*
702 and *bar* in the following::
703
704 def func(foo, bar=None): ...
705
706 * :dfn:`positional-only`: specifies an argument that can be supplied only
707 by position. Python has no syntax for defining positional-only
708 parameters. However, some built-in functions have positional-only
709 parameters (e.g. :func:`abs`).
710
Zachary Waree1391a02013-11-22 13:58:34 -0600711 .. _keyword-only_parameter:
712
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800713 * :dfn:`keyword-only`: specifies an argument that can be supplied only
714 by keyword. Keyword-only parameters can be defined by including a
715 single var-positional parameter or bare ``*`` in the parameter list
716 of the function definition before them, for example *kw_only1* and
717 *kw_only2* in the following::
718
719 def func(arg, *, kw_only1, kw_only2): ...
720
721 * :dfn:`var-positional`: specifies that an arbitrary sequence of
722 positional arguments can be provided (in addition to any positional
723 arguments already accepted by other parameters). Such a parameter can
724 be defined by prepending the parameter name with ``*``, for example
725 *args* in the following::
726
727 def func(*args, **kwargs): ...
728
729 * :dfn:`var-keyword`: specifies that arbitrarily many keyword arguments
730 can be provided (in addition to any keyword arguments already accepted
731 by other parameters). Such a parameter can be defined by prepending
732 the parameter name with ``**``, for example *kwargs* in the example
733 above.
734
735 Parameters can specify both optional and required arguments, as well as
736 default values for some optional arguments.
737
738 See also the :term:`argument` glossary entry, the FAQ question on
739 :ref:`the difference between arguments and parameters
740 <faq-argument-vs-parameter>`, the :class:`inspect.Parameter` class, the
741 :ref:`function` section, and :pep:`362`.
742
Barry Warsawdadebab2012-07-31 16:03:09 -0400743 path entry
744 A single location on the :term:`import path` which the :term:`path
Nick Coghlan1685db02012-08-20 13:49:08 +1000745 based finder` consults to find modules for importing.
Barry Warsawdadebab2012-07-31 16:03:09 -0400746
747 path entry finder
748 A :term:`finder` returned by a callable on :data:`sys.path_hooks`
749 (i.e. a :term:`path entry hook`) which knows how to locate modules given
750 a :term:`path entry`.
751
752 path entry hook
753 A callable on the :data:`sys.path_hook` list which returns a :term:`path
754 entry finder` if it knows how to find modules on a specific :term:`path
755 entry`.
756
Nick Coghlan1685db02012-08-20 13:49:08 +1000757 path based finder
Barry Warsawdadebab2012-07-31 16:03:09 -0400758 One of the default :term:`meta path finders <meta path finder>` which
759 searches an :term:`import path` for modules.
Barry Warsawd7d21942012-07-29 16:36:17 -0400760
761 portion
762 A set of files in a single directory (possibly stored in a zip file)
763 that contribute to a namespace package, as defined in :pep:`420`.
764
Christian Heimesd8654cf2007-12-02 15:22:16 +0000765 positional argument
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800766 See :term:`argument`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000767
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000768 provisional API
769 A provisional API is one which has been deliberately excluded from
Barry Warsawd7d21942012-07-29 16:36:17 -0400770 the standard library's backwards compatibility guarantees. While major
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000771 changes to such interfaces are not expected, as long as they are marked
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300772 provisional, backwards incompatible changes (up to and including removal
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000773 of the interface) may occur if deemed necessary by core developers. Such
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300774 changes will not be made gratuitously -- they will occur only if serious
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000775 fundamental flaws are uncovered that were missed prior to the inclusion
776 of the API.
777
778 Even for provisional APIs, backwards incompatible changes are seen as
779 a "solution of last resort" - every attempt will still be made to find
780 a backwards compatible resolution to any identified problems.
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300781
Barry Warsawd7d21942012-07-29 16:36:17 -0400782 This process allows the standard library to continue to evolve over
783 time, without locking in problematic design errors for extended periods
784 of time. See :pep:`411` for more details.
Eli Bendersky6bdb6502012-03-30 10:52:25 +0300785
Nick Coghlan4dae27a2013-10-20 13:22:04 +1000786 provisional package
787 See :term:`provisional API`.
788
Guido van Rossumf10aa982007-08-17 18:30:38 +0000789 Python 3000
Barry Warsawd7d21942012-07-29 16:36:17 -0400790 Nickname for the Python 3.x release line (coined long ago when the
791 release of version 3 was something in the distant future.) This is also
Benjamin Peterson1e2f0502008-05-26 12:52:02 +0000792 abbreviated "Py3k".
Guido van Rossumf10aa982007-08-17 18:30:38 +0000793
Christian Heimesd8654cf2007-12-02 15:22:16 +0000794 Pythonic
Benjamin Peterson5478b472008-09-17 22:25:09 +0000795 An idea or piece of code which closely follows the most common idioms
796 of the Python language, rather than implementing code using concepts
797 common to other languages. For example, a common idiom in Python is
798 to loop over all elements of an iterable using a :keyword:`for`
799 statement. Many other languages don't have this type of construct, so
800 people unfamiliar with Python sometimes use a numerical counter instead::
Georg Brandl48310cd2009-01-03 21:18:54 +0000801
Christian Heimesd8654cf2007-12-02 15:22:16 +0000802 for i in range(len(food)):
Georg Brandla09ca382007-12-02 18:20:12 +0000803 print(food[i])
Christian Heimesd8654cf2007-12-02 15:22:16 +0000804
805 As opposed to the cleaner, Pythonic method::
806
807 for piece in food:
Georg Brandla09ca382007-12-02 18:20:12 +0000808 print(piece)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000809
Antoine Pitrou86a36b52011-11-25 18:56:07 +0100810 qualified name
811 A dotted name showing the "path" from a module's global scope to a
812 class, function or method defined in that module, as defined in
813 :pep:`3155`. For top-level functions and classes, the qualified name
814 is the same as the object's name::
815
816 >>> class C:
817 ... class D:
818 ... def meth(self):
819 ... pass
820 ...
821 >>> C.__qualname__
822 'C'
823 >>> C.D.__qualname__
824 'C.D'
825 >>> C.D.meth.__qualname__
826 'C.D.meth'
827
Barry Warsawd7d21942012-07-29 16:36:17 -0400828 When used to refer to modules, the *fully qualified name* means the
829 entire dotted path to the module, including any parent packages,
830 e.g. ``email.mime.text``::
831
832 >>> import email.mime.text
833 >>> email.mime.text.__name__
834 'email.mime.text'
835
Guido van Rossumf10aa982007-08-17 18:30:38 +0000836 reference count
Benjamin Peterson5478b472008-09-17 22:25:09 +0000837 The number of references to an object. When the reference count of an
838 object drops to zero, it is deallocated. Reference counting is
839 generally not visible to Python code, but it is a key element of the
840 :term:`CPython` implementation. The :mod:`sys` module defines a
Georg Brandlede6c2a2010-01-05 10:22:04 +0000841 :func:`~sys.getrefcount` function that programmers can call to return the
Benjamin Peterson5478b472008-09-17 22:25:09 +0000842 reference count for a particular object.
843
Barry Warsawd7d21942012-07-29 16:36:17 -0400844 regular package
845 A traditional :term:`package`, such as a directory containing an
846 ``__init__.py`` file.
847
Georg Brandlbcce1252013-10-08 08:06:18 +0200848 See also :term:`namespace package`.
849
Guido van Rossumf10aa982007-08-17 18:30:38 +0000850 __slots__
Georg Brandl85eb8c12007-08-31 16:33:38 +0000851 A declaration inside a class that saves memory by pre-declaring space for
852 instance attributes and eliminating instance dictionaries. Though
853 popular, the technique is somewhat tricky to get right and is best
854 reserved for rare cases where there are large numbers of instances in a
855 memory-critical application.
Georg Brandl48310cd2009-01-03 21:18:54 +0000856
Guido van Rossumf10aa982007-08-17 18:30:38 +0000857 sequence
858 An :term:`iterable` which supports efficient element access using integer
Benjamin Peterson5478b472008-09-17 22:25:09 +0000859 indices via the :meth:`__getitem__` special method and defines a
Andrew Svetlov8cf1cc42012-10-05 13:26:10 +0300860 :meth:`__len__` method that returns the length of the sequence.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000861 Some built-in sequence types are :class:`list`, :class:`str`,
Georg Brandl2ae8ac22009-02-05 10:40:48 +0000862 :class:`tuple`, and :class:`bytes`. Note that :class:`dict` also
Guido van Rossumf10aa982007-08-17 18:30:38 +0000863 supports :meth:`__getitem__` and :meth:`__len__`, but is considered a
864 mapping rather than a sequence because the lookups use arbitrary
865 :term:`immutable` keys rather than integers.
866
Andrew Kuchlingcb3ff442014-02-15 17:05:26 -0500867 The :class:`collections.abc.Sequence` abstract base class
868 defines a much richer interface that goes beyond just
869 :meth:`__getitem__` and :meth:`__len__`, adding :meth:`count`,
870 :meth:`index`, :meth:`__contains__`, and
871 :meth:`__reversed__`. Types that implement this expanded
872 interface can be registered explicitly using
873 :func:`~abc.register`.
874
Łukasz Langafdcf2b72013-06-07 22:54:03 +0200875 single dispatch
876 A form of :term:`generic function` dispatch where the implementation is
877 chosen based on the type of a single argument.
878
Christian Heimesd8654cf2007-12-02 15:22:16 +0000879 slice
Georg Brandlc6fe37b2007-12-03 21:07:25 +0000880 An object usually containing a portion of a :term:`sequence`. A slice is
Christian Heimesd8654cf2007-12-02 15:22:16 +0000881 created using the subscript notation, ``[]`` with colons between numbers
882 when several are given, such as in ``variable_name[1:3:5]``. The bracket
Georg Brandla09ca382007-12-02 18:20:12 +0000883 (subscript) notation uses :class:`slice` objects internally.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000884
Georg Brandlaf265f42008-12-07 15:06:20 +0000885 special method
886 A method that is called implicitly by Python to execute a certain
887 operation on a type, such as addition. Such methods have names starting
888 and ending with double underscores. Special methods are documented in
889 :ref:`specialnames`.
890
Christian Heimesd8654cf2007-12-02 15:22:16 +0000891 statement
892 A statement is part of a suite (a "block" of code). A statement is either
Georg Brandl60e602d2013-10-06 11:57:13 +0200893 an :term:`expression` or one of several constructs with a keyword, such
Georg Brandla09ca382007-12-02 18:20:12 +0000894 as :keyword:`if`, :keyword:`while` or :keyword:`for`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000895
Benjamin Peterson82f614b2011-04-20 18:27:32 -0500896 struct sequence
Florent Xiclunaf8240d62011-11-11 19:58:53 +0100897 A tuple with named elements. Struct sequences expose an interface similar
Benjamin Peterson82f614b2011-04-20 18:27:32 -0500898 to :term:`named tuple` in that elements can either be accessed either by
899 index or as an attribute. However, they do not have any of the named tuple
900 methods like :meth:`~collections.somenamedtuple._make` or
901 :meth:`~collections.somenamedtuple._asdict`. Examples of struct sequences
902 include :data:`sys.float_info` and the return value of :func:`os.stat`.
903
Nick Coghlanb9fdb7a2015-01-07 00:22:00 +1000904 text encoding
905 A codec which encodes Unicode strings to bytes.
906
Antoine Pitroudd799d22013-12-05 23:46:32 +0100907 text file
908 A :term:`file object` able to read and write :class:`str` objects.
909 Often, a text file actually accesses a byte-oriented datastream
Nick Coghlanb9fdb7a2015-01-07 00:22:00 +1000910 and handles the :term:`text encoding` automatically.
Antoine Pitroudd799d22013-12-05 23:46:32 +0100911
912 .. seealso::
913 A :term:`binary file` reads and write :class:`bytes` objects.
914
Benjamin Peterson5478b472008-09-17 22:25:09 +0000915 triple-quoted string
916 A string which is bound by three instances of either a quotation mark
917 (") or an apostrophe ('). While they don't provide any functionality
918 not available with single-quoted strings, they are useful for a number
919 of reasons. They allow you to include unescaped single and double
920 quotes within a string and they can span multiple lines without the
921 use of the continuation character, making them especially useful when
922 writing docstrings.
923
Guido van Rossumf10aa982007-08-17 18:30:38 +0000924 type
925 The type of a Python object determines what kind of object it is; every
926 object has a type. An object's type is accessible as its
Serhiy Storchaka0d196ed2013-10-09 14:02:31 +0300927 :attr:`~instance.__class__` attribute or can be retrieved with
928 ``type(obj)``.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000929
R David Murray1b00f252012-08-15 10:43:58 -0400930 universal newlines
931 A manner of interpreting text streams in which all of the following are
932 recognized as ending a line: the Unix end-of-line convention ``'\n'``,
933 the Windows convention ``'\r\n'``, and the old Macintosh convention
934 ``'\r'``. See :pep:`278` and :pep:`3116`, as well as
Terry Jan Reedy004e8702014-08-23 18:28:44 -0400935 :func:`bytes.splitlines` for an additional use.
R David Murray1b00f252012-08-15 10:43:58 -0400936
Benjamin Peterson656aa282008-11-21 23:22:00 +0000937 view
Ezio Melotti619de8f2009-06-25 18:39:31 +0000938 The objects returned from :meth:`dict.keys`, :meth:`dict.values`, and
Benjamin Peterson656aa282008-11-21 23:22:00 +0000939 :meth:`dict.items` are called dictionary views. They are lazy sequences
940 that will see changes in the underlying dictionary. To force the
941 dictionary view to become a full list use ``list(dictview)``. See
942 :ref:`dict-views`.
943
Nick Coghlan1d520962014-09-06 20:38:23 +1000944 virtual environment
945 A cooperatively isolated runtime environment that allows Python users
946 and applications to install and upgrade Python distribution packages
947 without interfering with the behaviour of other Python applications
948 running on the same system.
949
950 See also :ref:`scripts-pyvenv`
951
Benjamin Peterson5478b472008-09-17 22:25:09 +0000952 virtual machine
953 A computer defined entirely in software. Python's virtual machine
954 executes the :term:`bytecode` emitted by the bytecode compiler.
Georg Brandl48310cd2009-01-03 21:18:54 +0000955
Guido van Rossumf10aa982007-08-17 18:30:38 +0000956 Zen of Python
957 Listing of Python design principles and philosophies that are helpful in
958 understanding and using the language. The listing can be found by typing
959 "``import this``" at the interactive prompt.