blob: 648c6791ae5017e53e278ff488195125931b688c [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
Martin Panter85b8f452015-10-07 09:56:46 +0000244 dictionary view
245 The objects returned from :meth:`dict.keys`, :meth:`dict.values`, and
246 :meth:`dict.items` are called dictionary views. They provide a dynamic
247 view on the dictionary’s entries, which means that when the dictionary
248 changes, the view reflects these changes. To force the
249 dictionary view to become a full list use ``list(dictview)``. See
250 :ref:`dict-views`.
251
Georg Brandl3dbca812008-07-23 16:10:53 +0000252 docstring
Benjamin Peterson5478b472008-09-17 22:25:09 +0000253 A string literal which appears as the first expression in a class,
254 function or module. While ignored when the suite is executed, it is
255 recognized by the compiler and put into the :attr:`__doc__` attribute
256 of the enclosing class, function or module. Since it is available via
257 introspection, it is the canonical place for documentation of the
Georg Brandl3dbca812008-07-23 16:10:53 +0000258 object.
Georg Brandl48310cd2009-01-03 21:18:54 +0000259
260 duck-typing
Georg Brandl73b1c7b2010-07-10 10:39:57 +0000261 A programming style which does not look at an object's type to determine
262 if it has the right interface; instead, the method or attribute is simply
263 called or used ("If it looks like a duck and quacks like a duck, it
Guido van Rossumf10aa982007-08-17 18:30:38 +0000264 must be a duck.") By emphasizing interfaces rather than specific types,
265 well-designed code improves its flexibility by allowing polymorphic
266 substitution. Duck-typing avoids tests using :func:`type` or
Georg Brandl8a1c2542010-07-11 08:36:20 +0000267 :func:`isinstance`. (Note, however, that duck-typing can be complemented
Éric Araujo0519b092011-08-19 00:39:19 +0200268 with :term:`abstract base classes <abstract base class>`.) Instead, it
269 typically employs :func:`hasattr` tests or :term:`EAFP` programming.
Georg Brandl48310cd2009-01-03 21:18:54 +0000270
Guido van Rossumf10aa982007-08-17 18:30:38 +0000271 EAFP
272 Easier to ask for forgiveness than permission. This common Python coding
273 style assumes the existence of valid keys or attributes and catches
274 exceptions if the assumption proves false. This clean and fast style is
275 characterized by the presence of many :keyword:`try` and :keyword:`except`
Georg Brandl48310cd2009-01-03 21:18:54 +0000276 statements. The technique contrasts with the :term:`LBYL` style
Benjamin Peterson5478b472008-09-17 22:25:09 +0000277 common to many other languages such as C.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000278
Christian Heimesd8654cf2007-12-02 15:22:16 +0000279 expression
280 A piece of syntax which can be evaluated to some value. In other words,
Benjamin Peterson5478b472008-09-17 22:25:09 +0000281 an expression is an accumulation of expression elements like literals,
282 names, attribute access, operators or function calls which all return a
283 value. In contrast to many other languages, not all language constructs
284 are expressions. There are also :term:`statement`\s which cannot be used
285 as expressions, such as :keyword:`if`. Assignments are also statements,
286 not expressions.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000287
Guido van Rossumf10aa982007-08-17 18:30:38 +0000288 extension module
Georg Brandl9d9848e2010-12-28 11:48:53 +0000289 A module written in C or C++, using Python's C API to interact with the
290 core and with user code.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000291
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000292 file object
293 An object exposing a file-oriented API (with methods such as
Georg Brandl9d9848e2010-12-28 11:48:53 +0000294 :meth:`read()` or :meth:`write()`) to an underlying resource. Depending
295 on the way it was created, a file object can mediate access to a real
Eli Benderskydbaedb82012-03-30 11:02:05 +0300296 on-disk file or to another type of storage or communication device
Georg Brandl9d9848e2010-12-28 11:48:53 +0000297 (for example standard input/output, in-memory buffers, sockets, pipes,
298 etc.). File objects are also called :dfn:`file-like objects` or
299 :dfn:`streams`.
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000300
Antoine Pitroudd799d22013-12-05 23:46:32 +0100301 There are actually three categories of file objects: raw
302 :term:`binary files <binary file>`, buffered
303 :term:`binary files <binary file>` and :term:`text files <text file>`.
304 Their interfaces are defined in the :mod:`io` module. The canonical
305 way to create a file object is by using the :func:`open` function.
Antoine Pitrou0b65b0f2010-09-15 09:58:26 +0000306
307 file-like object
308 A synonym for :term:`file object`.
309
Brett Cannon51d4aab2009-01-25 04:21:39 +0000310 finder
Brett Cannonccddbb12015-12-04 15:46:21 -0800311 An object that tries to find the :term:`loader` for a module that is
312 being imported.
313
314 Since Python 3.3, there are two types of finder: :term:`meta path finders
315 <meta path finder>` for use with :data:`sys.meta_path`, and :term:`path
316 entry finders <path entry finder>` for use with :data:`sys.path_hooks`.
317
318 See :pep:`302`, :pep:`420` and :pep:`451` for much more detail.
Brett Cannon51d4aab2009-01-25 04:21:39 +0000319
Benjamin Peterson2d718222008-11-21 00:25:02 +0000320 floor division
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000321 Mathematical division that rounds down to nearest integer. The floor
322 division operator is ``//``. For example, the expression ``11 // 4``
323 evaluates to ``2`` in contrast to the ``2.75`` returned by float true
324 division. Note that ``(-11) // 4`` is ``-3`` because that is ``-2.75``
325 rounded *downward*. See :pep:`238`.
Benjamin Peterson2d718222008-11-21 00:25:02 +0000326
Christian Heimesd8654cf2007-12-02 15:22:16 +0000327 function
328 A series of statements which returns some value to a caller. It can also
Chris Jerdonekb4309942012-12-25 14:54:44 -0800329 be passed zero or more :term:`arguments <argument>` which may be used in
330 the execution of the body. See also :term:`parameter`, :term:`method`,
331 and the :ref:`function` section.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000332
R David Murray25cd0912013-05-06 12:58:16 -0400333 function annotation
334 An arbitrary metadata value associated with a function parameter or return
335 value. Its syntax is explained in section :ref:`function`. Annotations
336 may be accessed via the :attr:`__annotations__` special attribute of a
337 function object.
338
339 Python itself does not assign any particular meaning to function
340 annotations. They are intended to be interpreted by third-party libraries
341 or tools. See :pep:`3107`, which describes some of their potential uses.
342
Guido van Rossumf10aa982007-08-17 18:30:38 +0000343 __future__
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000344 A pseudo-module which programmers can use to enable new language features
Benjamin Peterson2d718222008-11-21 00:25:02 +0000345 which are not compatible with the current interpreter.
346
347 By importing the :mod:`__future__` module and evaluating its variables,
348 you can see when a new feature was first added to the language and when it
349 becomes the default::
Georg Brandl48310cd2009-01-03 21:18:54 +0000350
Guido van Rossumf10aa982007-08-17 18:30:38 +0000351 >>> import __future__
352 >>> __future__.division
353 _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
354
355 garbage collection
356 The process of freeing memory when it is not used anymore. Python
357 performs garbage collection via reference counting and a cyclic garbage
358 collector that is able to detect and break reference cycles.
Georg Brandl48310cd2009-01-03 21:18:54 +0000359
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000360 .. index:: single: generator
361
Guido van Rossumf10aa982007-08-17 18:30:38 +0000362 generator
Yury Selivanov5376ba92015-06-22 12:19:30 -0400363 A function which returns a :term:`generator iterator`. It looks like a
364 normal function except that it contains :keyword:`yield` expressions
365 for producing a series of values usable in a for-loop or that can be
366 retrieved one at a time with the :func:`next` function.
367
368 Usually refers to a generator function, but may refer to a
369 *generator iterator* in some contexts. In cases where the intended
370 meaning isn't clear, using the full terms avoids ambiguity.
371
372 generator iterator
373 An object created by a :term:`generator` function.
374
375 Each :keyword:`yield` temporarily suspends processing, remembering the
376 location execution state (including local variables and pending
377 try-statements). When the *generator iterator* resumes, it picks-up where
378 it left-off (in contrast to functions which start fresh on every
379 invocation).
Georg Brandl48310cd2009-01-03 21:18:54 +0000380
Guido van Rossumf10aa982007-08-17 18:30:38 +0000381 .. index:: single: generator expression
Georg Brandl48310cd2009-01-03 21:18:54 +0000382
Guido van Rossumf10aa982007-08-17 18:30:38 +0000383 generator expression
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000384 An expression that returns an iterator. It looks like a normal expression
Guido van Rossumf10aa982007-08-17 18:30:38 +0000385 followed by a :keyword:`for` expression defining a loop variable, range,
386 and an optional :keyword:`if` expression. The combined expression
387 generates values for an enclosing function::
Georg Brandl48310cd2009-01-03 21:18:54 +0000388
Guido van Rossumf10aa982007-08-17 18:30:38 +0000389 >>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
390 285
Georg Brandl48310cd2009-01-03 21:18:54 +0000391
Łukasz Langafdcf2b72013-06-07 22:54:03 +0200392 generic function
393 A function composed of multiple functions implementing the same operation
394 for different types. Which implementation should be used during a call is
395 determined by the dispatch algorithm.
396
397 See also the :term:`single dispatch` glossary entry, the
398 :func:`functools.singledispatch` decorator, and :pep:`443`.
399
400
Guido van Rossumf10aa982007-08-17 18:30:38 +0000401 GIL
402 See :term:`global interpreter lock`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000403
Guido van Rossumf10aa982007-08-17 18:30:38 +0000404 global interpreter lock
Antoine Pitrou00342812011-01-06 16:31:28 +0000405 The mechanism used by the :term:`CPython` interpreter to assure that
406 only one thread executes Python :term:`bytecode` at a time.
407 This simplifies the CPython implementation by making the object model
408 (including critical built-in types such as :class:`dict`) implicitly
409 safe against concurrent access. Locking the entire interpreter
410 makes it easier for the interpreter to be multi-threaded, at the
411 expense of much of the parallelism afforded by multi-processor
412 machines.
413
414 However, some extension modules, either standard or third-party,
415 are designed so as to release the GIL when doing computationally-intensive
416 tasks such as compression or hashing. Also, the GIL is always released
417 when doing I/O.
418
419 Past efforts to create a "free-threaded" interpreter (one which locks
420 shared data at a much finer granularity) have not been successful
421 because performance suffered in the common single-processor case. It
422 is believed that overcoming this performance issue would make the
423 implementation much more complicated and therefore costlier to maintain.
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000424
425 hashable
Benjamin Peterson5478b472008-09-17 22:25:09 +0000426 An object is *hashable* if it has a hash value which never changes during
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000427 its lifetime (it needs a :meth:`__hash__` method), and can be compared to
Georg Brandl05f5ab72008-09-24 09:11:47 +0000428 other objects (it needs an :meth:`__eq__` method). Hashable objects which
429 compare equal must have the same hash value.
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000430
431 Hashability makes an object usable as a dictionary key and a set member,
432 because these data structures use the hash value internally.
433
Benjamin Peterson5478b472008-09-17 22:25:09 +0000434 All of Python's immutable built-in objects are hashable, while no mutable
435 containers (such as lists or dictionaries) are. Objects which are
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000436 instances of user-defined classes are hashable by default; they all
Georg Brandl4dd27a32014-10-06 16:45:23 +0200437 compare unequal (except with themselves), and their hash value is derived
438 from their :func:`id`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000439
Guido van Rossumf10aa982007-08-17 18:30:38 +0000440 IDLE
441 An Integrated Development Environment for Python. IDLE is a basic editor
Benjamin Peterson5478b472008-09-17 22:25:09 +0000442 and interpreter environment which ships with the standard distribution of
Raymond Hettingerf37ca3c2010-09-01 22:11:53 +0000443 Python.
Georg Brandl48310cd2009-01-03 21:18:54 +0000444
Guido van Rossumf10aa982007-08-17 18:30:38 +0000445 immutable
Benjamin Peterson5478b472008-09-17 22:25:09 +0000446 An object with a fixed value. Immutable objects include numbers, strings and
447 tuples. Such an object cannot be altered. A new object has to
Guido van Rossumf10aa982007-08-17 18:30:38 +0000448 be created if a different value has to be stored. They play an important
449 role in places where a constant hash value is needed, for example as a key
450 in a dictionary.
Benjamin Peterson2d718222008-11-21 00:25:02 +0000451
Barry Warsawdadebab2012-07-31 16:03:09 -0400452 import path
453 A list of locations (or :term:`path entries <path entry>`) that are
Nick Coghlan1685db02012-08-20 13:49:08 +1000454 searched by the :term:`path based finder` for modules to import. During
Barry Warsawdadebab2012-07-31 16:03:09 -0400455 import, this list of locations usually comes from :data:`sys.path`, but
456 for subpackages it may also come from the parent package's ``__path__``
457 attribute.
458
Barry Warsawd7d21942012-07-29 16:36:17 -0400459 importing
460 The process by which Python code in one module is made available to
461 Python code in another module.
462
Brett Cannon51d4aab2009-01-25 04:21:39 +0000463 importer
464 An object that both finds and loads a module; both a
465 :term:`finder` and :term:`loader` object.
466
Guido van Rossumf10aa982007-08-17 18:30:38 +0000467 interactive
Benjamin Peterson5478b472008-09-17 22:25:09 +0000468 Python has an interactive interpreter which means you can enter
469 statements and expressions at the interpreter prompt, immediately
470 execute them and see their results. Just launch ``python`` with no
471 arguments (possibly by selecting it from your computer's main
472 menu). It is a very powerful way to test out new ideas or inspect
473 modules and packages (remember ``help(x)``).
Georg Brandl48310cd2009-01-03 21:18:54 +0000474
Guido van Rossumf10aa982007-08-17 18:30:38 +0000475 interpreted
Benjamin Peterson5478b472008-09-17 22:25:09 +0000476 Python is an interpreted language, as opposed to a compiled one,
477 though the distinction can be blurry because of the presence of the
478 bytecode compiler. This means that source files can be run directly
479 without explicitly creating an executable which is then run.
480 Interpreted languages typically have a shorter development/debug cycle
481 than compiled ones, though their programs generally also run more
482 slowly. See also :term:`interactive`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000483
Antoine Pitrou5db1bb82014-12-07 01:28:27 +0100484 interpreter shutdown
485 When asked to shut down, the Python interpreter enters a special phase
486 where it gradually releases all allocated resources, such as modules
487 and various critical internal structures. It also makes several calls
488 to the :term:`garbage collector <garbage collection>`. This can trigger
489 the execution of code in user-defined destructors or weakref callbacks.
490 Code executed during the shutdown phase can encounter various
491 exceptions as the resources it relies on may not function anymore
492 (common examples are library modules or the warnings machinery).
493
494 The main reason for interpreter shutdown is that the ``__main__`` module
495 or the script being run has finished executing.
496
Guido van Rossumf10aa982007-08-17 18:30:38 +0000497 iterable
Ezio Melottid581fff2013-01-02 22:29:09 +0200498 An object capable of returning its members one at a time. Examples of
499 iterables include all sequence types (such as :class:`list`, :class:`str`,
500 and :class:`tuple`) and some non-sequence types like :class:`dict`,
501 :term:`file objects <file object>`, and objects of any classes you define
502 with an :meth:`__iter__` or :meth:`__getitem__` method. Iterables can be
503 used in a :keyword:`for` loop and in many other places where a sequence is
504 needed (:func:`zip`, :func:`map`, ...). When an iterable object is passed
505 as an argument to the built-in function :func:`iter`, it returns an
506 iterator for the object. This iterator is good for one pass over the set
507 of values. When using iterables, it is usually not necessary to call
508 :func:`iter` or deal with iterator objects yourself. The ``for``
Guido van Rossumf10aa982007-08-17 18:30:38 +0000509 statement does that automatically for you, creating a temporary unnamed
510 variable to hold the iterator for the duration of the loop. See also
511 :term:`iterator`, :term:`sequence`, and :term:`generator`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000512
Guido van Rossumf10aa982007-08-17 18:30:38 +0000513 iterator
514 An object representing a stream of data. Repeated calls to the iterator's
Ezio Melotti7fa82222012-10-12 13:42:08 +0300515 :meth:`~iterator.__next__` method (or passing it to the built-in function
Georg Brandlb30f3302011-01-06 09:23:56 +0000516 :func:`next`) return successive items in the stream. When no more data
517 are available a :exc:`StopIteration` exception is raised instead. At this
Benjamin Petersone7c78b22008-07-03 20:28:26 +0000518 point, the iterator object is exhausted and any further calls to its
Georg Brandlb30f3302011-01-06 09:23:56 +0000519 :meth:`__next__` method just raise :exc:`StopIteration` again. Iterators
520 are required to have an :meth:`__iter__` method that returns the iterator
Guido van Rossumf10aa982007-08-17 18:30:38 +0000521 object itself so every iterator is also iterable and may be used in most
522 places where other iterables are accepted. One notable exception is code
Benjamin Peterson5478b472008-09-17 22:25:09 +0000523 which attempts multiple iteration passes. A container object (such as a
Guido van Rossumf10aa982007-08-17 18:30:38 +0000524 :class:`list`) produces a fresh new iterator each time you pass it to the
525 :func:`iter` function or use it in a :keyword:`for` loop. Attempting this
526 with an iterator will just return the same exhausted iterator object used
527 in the previous iteration pass, making it appear like an empty container.
Georg Brandl48310cd2009-01-03 21:18:54 +0000528
Georg Brandl9afde1c2007-11-01 20:32:30 +0000529 More information can be found in :ref:`typeiter`.
530
Georg Brandlc275e152010-11-05 07:10:41 +0000531 key function
532 A key function or collation function is a callable that returns a value
533 used for sorting or ordering. For example, :func:`locale.strxfrm` is
534 used to produce a sort key that is aware of locale specific sort
535 conventions.
536
537 A number of tools in Python accept key functions to control how elements
538 are ordered or grouped. They include :func:`min`, :func:`max`,
Raymond Hettinger35db4392014-05-30 02:28:36 -0700539 :func:`sorted`, :meth:`list.sort`, :func:`heapq.merge`,
540 :func:`heapq.nsmallest`, :func:`heapq.nlargest`, and
541 :func:`itertools.groupby`.
Georg Brandlc275e152010-11-05 07:10:41 +0000542
543 There are several ways to create a key function. For example. the
544 :meth:`str.lower` method can serve as a key function for case insensitive
Raymond Hettinger35db4392014-05-30 02:28:36 -0700545 sorts. Alternatively, a key function can be built from a
Georg Brandlc275e152010-11-05 07:10:41 +0000546 :keyword:`lambda` expression such as ``lambda r: (r[0], r[2])``. Also,
Sandro Tosi165a2c22012-04-01 01:50:00 +0200547 the :mod:`operator` module provides three key function constructors:
Georg Brandlc275e152010-11-05 07:10:41 +0000548 :func:`~operator.attrgetter`, :func:`~operator.itemgetter`, and
549 :func:`~operator.methodcaller`. See the :ref:`Sorting HOW TO
550 <sortinghowto>` for examples of how to create and use key functions.
551
Christian Heimesd8654cf2007-12-02 15:22:16 +0000552 keyword argument
Chris Jerdonekc2a7fd62012-11-28 02:29:33 -0800553 See :term:`argument`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000554
555 lambda
556 An anonymous inline function consisting of a single :term:`expression`
557 which is evaluated when the function is called. The syntax to create
558 a lambda function is ``lambda [arguments]: expression``
559
Guido van Rossumf10aa982007-08-17 18:30:38 +0000560 LBYL
561 Look before you leap. This coding style explicitly tests for
562 pre-conditions before making calls or lookups. This style contrasts with
563 the :term:`EAFP` approach and is characterized by the presence of many
564 :keyword:`if` statements.
Benjamin Peterson5478b472008-09-17 22:25:09 +0000565
Raymond Hettinger09f44142010-12-17 20:19:50 +0000566 In a multi-threaded environment, the LBYL approach can risk introducing a
567 race condition between "the looking" and "the leaping". For example, the
568 code, ``if key in mapping: return mapping[key]`` can fail if another
569 thread removes *key* from *mapping* after the test, but before the lookup.
570 This issue can be solved with locks or by using the EAFP approach.
571
Benjamin Peterson5478b472008-09-17 22:25:09 +0000572 list
573 A built-in Python :term:`sequence`. Despite its name it is more akin
574 to an array in other languages than to a linked list since access to
575 elements are O(1).
Georg Brandl48310cd2009-01-03 21:18:54 +0000576
Guido van Rossumf10aa982007-08-17 18:30:38 +0000577 list comprehension
Benjamin Peterson5478b472008-09-17 22:25:09 +0000578 A compact way to process all or part of the elements in a sequence and
Georg Brandlede6c2a2010-01-05 10:22:04 +0000579 return a list with the results. ``result = ['{:#04x}'.format(x) for x in
Benjamin Peterson5478b472008-09-17 22:25:09 +0000580 range(256) if x % 2 == 0]`` generates a list of strings containing
581 even hex numbers (0x..) in the range from 0 to 255. The :keyword:`if`
582 clause is optional. If omitted, all elements in ``range(256)`` are
583 processed.
Georg Brandl48310cd2009-01-03 21:18:54 +0000584
Brett Cannon51d4aab2009-01-25 04:21:39 +0000585 loader
586 An object that loads a module. It must define a method named
587 :meth:`load_module`. A loader is typically returned by a
Brett Cannone43b0602009-03-21 03:11:16 +0000588 :term:`finder`. See :pep:`302` for details and
589 :class:`importlib.abc.Loader` for an :term:`abstract base class`.
Brett Cannon51d4aab2009-01-25 04:21:39 +0000590
Guido van Rossumf10aa982007-08-17 18:30:38 +0000591 mapping
Raymond Hettingere3ee66f2011-01-08 23:44:37 +0000592 A container object that supports arbitrary key lookups and implements the
Éric Araujob8edbdf2011-09-01 05:57:12 +0200593 methods specified in the :class:`~collections.abc.Mapping` or
594 :class:`~collections.abc.MutableMapping`
Éric Araujofa088db2011-06-04 18:42:38 +0200595 :ref:`abstract base classes <collections-abstract-base-classes>`. Examples
596 include :class:`dict`, :class:`collections.defaultdict`,
Raymond Hettingere3ee66f2011-01-08 23:44:37 +0000597 :class:`collections.OrderedDict` and :class:`collections.Counter`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000598
Barry Warsawd7d21942012-07-29 16:36:17 -0400599 meta path finder
Brett Cannonccddbb12015-12-04 15:46:21 -0800600 A :term:`finder` returned by a search of :data:`sys.meta_path`. Meta path
Barry Warsawdadebab2012-07-31 16:03:09 -0400601 finders are related to, but different from :term:`path entry finders
602 <path entry finder>`.
Barry Warsawd7d21942012-07-29 16:36:17 -0400603
Brett Cannonccddbb12015-12-04 15:46:21 -0800604 See :class:`importlib.abc.MetaPathFinder` for the methods that meta path
605 finders implement.
606
Guido van Rossumf10aa982007-08-17 18:30:38 +0000607 metaclass
608 The class of a class. Class definitions create a class name, a class
609 dictionary, and a list of base classes. The metaclass is responsible for
610 taking those three arguments and creating the class. Most object oriented
611 programming languages provide a default implementation. What makes Python
612 special is that it is possible to create custom metaclasses. Most users
613 never need this tool, but when the need arises, metaclasses can provide
614 powerful, elegant solutions. They have been used for logging attribute
615 access, adding thread-safety, tracking object creation, implementing
616 singletons, and many other tasks.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000617
618 More information can be found in :ref:`metaclasses`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000619
620 method
Benjamin Peterson5478b472008-09-17 22:25:09 +0000621 A function which is defined inside a class body. If called as an attribute
Christian Heimesd8654cf2007-12-02 15:22:16 +0000622 of an instance of that class, the method will get the instance object as
623 its first :term:`argument` (which is usually called ``self``).
624 See :term:`function` and :term:`nested scope`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000625
Michael Foord95fc51d2010-11-20 15:07:30 +0000626 method resolution order
627 Method Resolution Order is the order in which base classes are searched
628 for a member during lookup. See `The Python 2.3 Method Resolution Order
Georg Brandle73778c2014-10-29 08:36:35 +0100629 <https://www.python.org/download/releases/2.3/mro/>`_.
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.