Home | History | Annotate | Download | only in Doc
      1 .. _glossary:
      2 
      3 ********
      4 Glossary
      5 ********
      6 
      7 .. if you add new entries, keep the alphabetical sorting!
      8 
      9 .. glossary::
     10 
     11    ``>>>``
     12       The default Python prompt of the interactive shell.  Often seen for code
     13       examples which can be executed interactively in the interpreter.
     14 
     15    ``...``
     16       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).
     19 
     20    2to3
     21       A tool that tries to convert Python 2.x code to Python 3.x code by
     22       handling most of the incompatibilities which can be detected by parsing the
     23       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 
     29    abstract base class
     30       Abstract base classes complement :term:`duck-typing` by
     31       providing a way to define interfaces when other techniques like
     32       :func:`hasattr` would be clumsy or subtly wrong (for example with
     33       :ref:`magic methods <new-style-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
     37       data structures (in the :mod:`collections` module), numbers (in the
     38       :mod:`numbers` module), and streams (in the :mod:`io` module). You can
     39       create your own ABCs with the :mod:`abc` module.
     40 
     41    argument
     42       A value passed to a :term:`function` (or :term:`method`) when calling the
     43       function.  There are two types of arguments:
     44 
     45       * :dfn:`keyword argument`: an argument preceded by an identifier (e.g.
     46         ``name=``) in a function call or passed as a value in a dictionary
     47         preceded by ``**``.  For example, ``3`` and ``5`` are both keyword
     48         arguments in the following calls to :func:`complex`::
     49 
     50            complex(real=3, imag=5)
     51            complex(**{'real': 3, 'imag': 5})
     52 
     53       * :dfn:`positional argument`: an argument that is not a keyword argument.
     54         Positional arguments can appear at the beginning of an argument list
     55         and/or be passed as elements of an :term:`iterable` preceded by ``*``.
     56         For example, ``3`` and ``5`` are both positional arguments in the
     57         following calls::
     58 
     59            complex(3, 5)
     60            complex(*(3, 5))
     61 
     62       Arguments are assigned to the named local variables in a function body.
     63       See the :ref:`calls` section for the rules governing this assignment.
     64       Syntactically, any expression can be used to represent an argument; the
     65       evaluated value is assigned to the local variable.
     66 
     67       See also the :term:`parameter` glossary entry and the FAQ question on
     68       :ref:`the difference between arguments and parameters
     69       <faq-argument-vs-parameter>`.
     70 
     71    attribute
     72       A value associated with an object which is referenced by name using
     73       dotted expressions.  For example, if an object *o* has an attribute
     74       *a* it would be referenced as *o.a*.
     75 
     76    BDFL
     77       Benevolent Dictator For Life, a.k.a. `Guido van Rossum
     78       <https://www.python.org/~guido/>`_, Python's creator.
     79 
     80    bytes-like object
     81       An object that supports the :ref:`buffer protocol <bufferobjects>`,
     82       like :class:`str`, :class:`bytearray` or :class:`memoryview`.
     83       Bytes-like objects can be used for various operations that expect
     84       binary data, such as compression, saving to a binary file or sending
     85       over a socket. Some operations need the binary data to be mutable,
     86       in which case not all bytes-like objects can apply.
     87 
     88    bytecode
     89       Python source code is compiled into bytecode, the internal representation
     90       of a Python program in the CPython interpreter.  The bytecode is also
     91       cached in ``.pyc`` and ``.pyo`` files so that executing the same file is
     92       faster the second time (recompilation from source to bytecode can be
     93       avoided).  This "intermediate language" is said to run on a
     94       :term:`virtual machine` that executes the machine code corresponding to
     95       each bytecode. Do note that bytecodes are not expected to work between
     96       different Python virtual machines, nor to be stable between Python
     97       releases.
     98 
     99       A list of bytecode instructions can be found in the documentation for
    100       :ref:`the dis module <bytecodes>`.
    101 
    102    class
    103       A template for creating user-defined objects. Class definitions
    104       normally contain method definitions which operate on instances of the
    105       class.
    106 
    107    classic class
    108       Any class which does not inherit from :class:`object`.  See
    109       :term:`new-style class`.  Classic classes have been removed in Python 3.
    110 
    111    coercion
    112       The implicit conversion of an instance of one type to another during an
    113       operation which involves two arguments of the same type.  For example,
    114       ``int(3.15)`` converts the floating point number to the integer ``3``, but
    115       in ``3+4.5``, each argument is of a different type (one int, one float),
    116       and both must be converted to the same type before they can be added or it
    117       will raise a ``TypeError``.  Coercion between two operands can be
    118       performed with the ``coerce`` built-in function; thus, ``3+4.5`` is
    119       equivalent to calling ``operator.add(*coerce(3, 4.5))`` and results in
    120       ``operator.add(3.0, 4.5)``.  Without coercion, all arguments of even
    121       compatible types would have to be normalized to the same value by the
    122       programmer, e.g., ``float(3)+4.5`` rather than just ``3+4.5``.
    123 
    124    complex number
    125       An extension of the familiar real number system in which all numbers are
    126       expressed as a sum of a real part and an imaginary part.  Imaginary
    127       numbers are real multiples of the imaginary unit (the square root of
    128       ``-1``), often written ``i`` in mathematics or ``j`` in
    129       engineering.  Python has built-in support for complex numbers, which are
    130       written with this latter notation; the imaginary part is written with a
    131       ``j`` suffix, e.g., ``3+1j``.  To get access to complex equivalents of the
    132       :mod:`math` module, use :mod:`cmath`.  Use of complex numbers is a fairly
    133       advanced mathematical feature.  If you're not aware of a need for them,
    134       it's almost certain you can safely ignore them.
    135 
    136    context manager
    137       An object which controls the environment seen in a :keyword:`with`
    138       statement by defining :meth:`__enter__` and :meth:`__exit__` methods.
    139       See :pep:`343`.
    140 
    141    CPython
    142       The canonical implementation of the Python programming language, as
    143       distributed on `python.org <https://www.python.org>`_.  The term "CPython"
    144       is used when necessary to distinguish this implementation from others
    145       such as Jython or IronPython.
    146 
    147    decorator
    148       A function returning another function, usually applied as a function
    149       transformation using the ``@wrapper`` syntax.  Common examples for
    150       decorators are :func:`classmethod` and :func:`staticmethod`.
    151 
    152       The decorator syntax is merely syntactic sugar, the following two
    153       function definitions are semantically equivalent::
    154 
    155          def f(...):
    156              ...
    157          f = staticmethod(f)
    158 
    159          @staticmethod
    160          def f(...):
    161              ...
    162 
    163       The same concept exists for classes, but is less commonly used there.  See
    164       the documentation for :ref:`function definitions <function>` and
    165       :ref:`class definitions <class>` for more about decorators.
    166 
    167    descriptor
    168       Any *new-style* object which defines the methods :meth:`__get__`,
    169       :meth:`__set__`, or :meth:`__delete__`.  When a class attribute is a
    170       descriptor, its special binding behavior is triggered upon attribute
    171       lookup.  Normally, using *a.b* to get, set or delete an attribute looks up
    172       the object named *b* in the class dictionary for *a*, but if *b* is a
    173       descriptor, the respective descriptor method gets called.  Understanding
    174       descriptors is a key to a deep understanding of Python because they are
    175       the basis for many features including functions, methods, properties,
    176       class methods, static methods, and reference to super classes.
    177 
    178       For more information about descriptors' methods, see :ref:`descriptors`.
    179 
    180    dictionary
    181       An associative array, where arbitrary keys are mapped to values.  The
    182       keys can be any object with :meth:`__hash__`  and :meth:`__eq__` methods.
    183       Called a hash in Perl.
    184 
    185    dictionary view
    186       The objects returned from :meth:`dict.viewkeys`, :meth:`dict.viewvalues`,
    187       and :meth:`dict.viewitems` are called dictionary views. They provide a dynamic
    188       view on the dictionarys entries, which means that when the dictionary
    189       changes, the view reflects these changes. To force the
    190       dictionary view to become a full list use ``list(dictview)``.  See
    191       :ref:`dict-views`.
    192 
    193    docstring
    194       A string literal which appears as the first expression in a class,
    195       function or module.  While ignored when the suite is executed, it is
    196       recognized by the compiler and put into the :attr:`__doc__` attribute
    197       of the enclosing class, function or module.  Since it is available via
    198       introspection, it is the canonical place for documentation of the
    199       object.
    200 
    201    duck-typing
    202       A programming style which does not look at an object's type to determine
    203       if it has the right interface; instead, the method or attribute is simply
    204       called or used ("If it looks like a duck and quacks like a duck, it
    205       must be a duck.")  By emphasizing interfaces rather than specific types,
    206       well-designed code improves its flexibility by allowing polymorphic
    207       substitution.  Duck-typing avoids tests using :func:`type` or
    208       :func:`isinstance`.  (Note, however, that duck-typing can be complemented
    209       with :term:`abstract base classes <abstract base class>`.)  Instead, it
    210       typically employs :func:`hasattr` tests or :term:`EAFP` programming.
    211 
    212    EAFP
    213       Easier to ask for forgiveness than permission.  This common Python coding
    214       style assumes the existence of valid keys or attributes and catches
    215       exceptions if the assumption proves false.  This clean and fast style is
    216       characterized by the presence of many :keyword:`try` and :keyword:`except`
    217       statements.  The technique contrasts with the :term:`LBYL` style
    218       common to many other languages such as C.
    219 
    220    expression
    221       A piece of syntax which can be evaluated to some value.  In other words,
    222       an expression is an accumulation of expression elements like literals,
    223       names, attribute access, operators or function calls which all return a
    224       value.  In contrast to many other languages, not all language constructs
    225       are expressions.  There are also :term:`statement`\s which cannot be used
    226       as expressions, such as :keyword:`print` or :keyword:`if`.  Assignments
    227       are also statements, not expressions.
    228 
    229    extension module
    230       A module written in C or C++, using Python's C API to interact with the
    231       core and with user code.
    232 
    233    file object
    234       An object exposing a file-oriented API (with methods such as
    235       :meth:`read()` or :meth:`write()`) to an underlying resource.  Depending
    236       on the way it was created, a file object can mediate access to a real
    237       on-disk file or to another type of storage or communication device
    238       (for example standard input/output, in-memory buffers, sockets, pipes,
    239       etc.).  File objects are also called :dfn:`file-like objects` or
    240       :dfn:`streams`.
    241 
    242       There are actually three categories of file objects: raw binary files,
    243       buffered binary files and text files.  Their interfaces are defined in the
    244       :mod:`io` module.  The canonical way to create a file object is by using
    245       the :func:`open` function.
    246 
    247    file-like object
    248       A synonym for :term:`file object`.
    249 
    250    finder
    251       An object that tries to find the :term:`loader` for a module. It must
    252       implement a method named :meth:`find_module`. See :pep:`302` for
    253       details.
    254 
    255    floor division
    256       Mathematical division that rounds down to nearest integer.  The floor
    257       division operator is ``//``.  For example, the expression ``11 // 4``
    258       evaluates to ``2`` in contrast to the ``2.75`` returned by float true
    259       division.  Note that ``(-11) // 4`` is ``-3`` because that is ``-2.75``
    260       rounded *downward*. See :pep:`238`.
    261 
    262    function
    263       A series of statements which returns some value to a caller. It can also
    264       be passed zero or more :term:`arguments <argument>` which may be used in
    265       the execution of the body. See also :term:`parameter`, :term:`method`,
    266       and the :ref:`function` section.
    267 
    268    __future__
    269       A pseudo-module which programmers can use to enable new language features
    270       which are not compatible with the current interpreter.  For example, the
    271       expression ``11/4`` currently evaluates to ``2``. If the module in which
    272       it is executed had enabled *true division* by executing::
    273 
    274          from __future__ import division
    275 
    276       the expression ``11/4`` would evaluate to ``2.75``.  By importing the
    277       :mod:`__future__` module and evaluating its variables, you can see when a
    278       new feature was first added to the language and when it will become the
    279       default::
    280 
    281          >>> import __future__
    282          >>> __future__.division
    283          _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
    284 
    285    garbage collection
    286       The process of freeing memory when it is not used anymore.  Python
    287       performs garbage collection via reference counting and a cyclic garbage
    288       collector that is able to detect and break reference cycles.
    289 
    290       .. index:: single: generator
    291 
    292    generator
    293       A function which returns an iterator.  It looks like a normal function
    294       except that it contains :keyword:`yield` statements for producing a series
    295       of values usable in a for-loop or that can be retrieved one at a time with
    296       the :func:`next` function. Each :keyword:`yield` temporarily suspends
    297       processing, remembering the location execution state (including local
    298       variables and pending try-statements).  When the generator resumes, it
    299       picks-up where it left-off (in contrast to functions which start fresh on
    300       every invocation).
    301 
    302       .. index:: single: generator expression
    303 
    304    generator expression
    305       An expression that returns an iterator.  It looks like a normal expression
    306       followed by a :keyword:`for` expression defining a loop variable, range,
    307       and an optional :keyword:`if` expression.  The combined expression
    308       generates values for an enclosing function::
    309 
    310          >>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
    311          285
    312 
    313    GIL
    314       See :term:`global interpreter lock`.
    315 
    316    global interpreter lock
    317       The mechanism used by the :term:`CPython` interpreter to assure that
    318       only one thread executes Python :term:`bytecode` at a time.
    319       This simplifies the CPython implementation by making the object model
    320       (including critical built-in types such as :class:`dict`) implicitly
    321       safe against concurrent access.  Locking the entire interpreter
    322       makes it easier for the interpreter to be multi-threaded, at the
    323       expense of much of the parallelism afforded by multi-processor
    324       machines.
    325 
    326       However, some extension modules, either standard or third-party,
    327       are designed so as to release the GIL when doing computationally-intensive
    328       tasks such as compression or hashing.  Also, the GIL is always released
    329       when doing I/O.
    330 
    331       Past efforts to create a "free-threaded" interpreter (one which locks
    332       shared data at a much finer granularity) have not been successful
    333       because performance suffered in the common single-processor case. It
    334       is believed that overcoming this performance issue would make the
    335       implementation much more complicated and therefore costlier to maintain.
    336 
    337    hashable
    338       An object is *hashable* if it has a hash value which never changes during
    339       its lifetime (it needs a :meth:`__hash__` method), and can be compared to
    340       other objects (it needs an :meth:`__eq__` or :meth:`__cmp__` method).
    341       Hashable objects which compare equal must have the same hash value.
    342 
    343       Hashability makes an object usable as a dictionary key and a set member,
    344       because these data structures use the hash value internally.
    345 
    346       All of Python's immutable built-in objects are hashable, while no mutable
    347       containers (such as lists or dictionaries) are.  Objects which are
    348       instances of user-defined classes are hashable by default; they all
    349       compare unequal (except with themselves), and their hash value is derived
    350       from their :func:`id`.
    351 
    352    IDLE
    353       An Integrated Development Environment for Python.  IDLE is a basic editor
    354       and interpreter environment which ships with the standard distribution of
    355       Python.
    356 
    357    immutable
    358       An object with a fixed value.  Immutable objects include numbers, strings and
    359       tuples.  Such an object cannot be altered.  A new object has to
    360       be created if a different value has to be stored.  They play an important
    361       role in places where a constant hash value is needed, for example as a key
    362       in a dictionary.
    363 
    364    integer division
    365       Mathematical division discarding any remainder.  For example, the
    366       expression ``11/4`` currently evaluates to ``2`` in contrast to the
    367       ``2.75`` returned by float division.  Also called *floor division*.
    368       When dividing two integers the outcome will always be another integer
    369       (having the floor function applied to it). However, if one of the operands
    370       is another numeric type (such as a :class:`float`), the result will be
    371       coerced (see :term:`coercion`) to a common type.  For example, an integer
    372       divided by a float will result in a float value, possibly with a decimal
    373       fraction.  Integer division can be forced by using the ``//`` operator
    374       instead of the ``/`` operator.  See also :term:`__future__`.
    375 
    376    importing
    377       The process by which Python code in one module is made available to
    378       Python code in another module.
    379 
    380    importer
    381       An object that both finds and loads a module; both a
    382       :term:`finder` and :term:`loader` object.
    383 
    384    interactive
    385       Python has an interactive interpreter which means you can enter
    386       statements and expressions at the interpreter prompt, immediately
    387       execute them and see their results.  Just launch ``python`` with no
    388       arguments (possibly by selecting it from your computer's main
    389       menu). It is a very powerful way to test out new ideas or inspect
    390       modules and packages (remember ``help(x)``).
    391 
    392    interpreted
    393       Python is an interpreted language, as opposed to a compiled one,
    394       though the distinction can be blurry because of the presence of the
    395       bytecode compiler.  This means that source files can be run directly
    396       without explicitly creating an executable which is then run.
    397       Interpreted languages typically have a shorter development/debug cycle
    398       than compiled ones, though their programs generally also run more
    399       slowly.  See also :term:`interactive`.
    400 
    401    iterable
    402       An object capable of returning its members one at a time. Examples of
    403       iterables include all sequence types (such as :class:`list`, :class:`str`,
    404       and :class:`tuple`) and some non-sequence types like :class:`dict`
    405       and :class:`file` and objects of any classes you define
    406       with an :meth:`__iter__` or :meth:`__getitem__` method.  Iterables can be
    407       used in a :keyword:`for` loop and in many other places where a sequence is
    408       needed (:func:`zip`, :func:`map`, ...).  When an iterable object is passed
    409       as an argument to the built-in function :func:`iter`, it returns an
    410       iterator for the object.  This iterator is good for one pass over the set
    411       of values.  When using iterables, it is usually not necessary to call
    412       :func:`iter` or deal with iterator objects yourself.  The ``for``
    413       statement does that automatically for you, creating a temporary unnamed
    414       variable to hold the iterator for the duration of the loop.  See also
    415       :term:`iterator`, :term:`sequence`, and :term:`generator`.
    416 
    417    iterator
    418       An object representing a stream of data.  Repeated calls to the iterator's
    419       :meth:`~generator.next` method return successive items in the stream.  When no more
    420       data are available a :exc:`StopIteration` exception is raised instead.  At
    421       this point, the iterator object is exhausted and any further calls to its
    422       :meth:`~generator.next` method just raise :exc:`StopIteration` again.  Iterators are
    423       required to have an :meth:`__iter__` method that returns the iterator
    424       object itself so every iterator is also iterable and may be used in most
    425       places where other iterables are accepted.  One notable exception is code
    426       which attempts multiple iteration passes.  A container object (such as a
    427       :class:`list`) produces a fresh new iterator each time you pass it to the
    428       :func:`iter` function or use it in a :keyword:`for` loop.  Attempting this
    429       with an iterator will just return the same exhausted iterator object used
    430       in the previous iteration pass, making it appear like an empty container.
    431 
    432       More information can be found in :ref:`typeiter`.
    433 
    434    key function
    435       A key function or collation function is a callable that returns a value
    436       used for sorting or ordering.  For example, :func:`locale.strxfrm` is
    437       used to produce a sort key that is aware of locale specific sort
    438       conventions.
    439 
    440       A number of tools in Python accept key functions to control how elements
    441       are ordered or grouped.  They include :func:`min`, :func:`max`,
    442       :func:`sorted`, :meth:`list.sort`, :func:`heapq.nsmallest`,
    443       :func:`heapq.nlargest`, and :func:`itertools.groupby`.
    444 
    445       There are several ways to create a key function.  For example. the
    446       :meth:`str.lower` method can serve as a key function for case insensitive
    447       sorts.  Alternatively, an ad-hoc key function can be built from a
    448       :keyword:`lambda` expression such as ``lambda r: (r[0], r[2])``.  Also,
    449       the :mod:`operator` module provides three key function constructors:
    450       :func:`~operator.attrgetter`, :func:`~operator.itemgetter`, and
    451       :func:`~operator.methodcaller`.  See the :ref:`Sorting HOW TO
    452       <sortinghowto>` for examples of how to create and use key functions.
    453 
    454    keyword argument
    455       See :term:`argument`.
    456 
    457    lambda
    458       An anonymous inline function consisting of a single :term:`expression`
    459       which is evaluated when the function is called.  The syntax to create
    460       a lambda function is ``lambda [arguments]: expression``
    461 
    462    LBYL
    463       Look before you leap.  This coding style explicitly tests for
    464       pre-conditions before making calls or lookups.  This style contrasts with
    465       the :term:`EAFP` approach and is characterized by the presence of many
    466       :keyword:`if` statements.
    467 
    468       In a multi-threaded environment, the LBYL approach can risk introducing a
    469       race condition between "the looking" and "the leaping".  For example, the
    470       code, ``if key in mapping: return mapping[key]`` can fail if another
    471       thread removes *key* from *mapping* after the test, but before the lookup.
    472       This issue can be solved with locks or by using the EAFP approach.
    473 
    474    list
    475       A built-in Python :term:`sequence`.  Despite its name it is more akin
    476       to an array in other languages than to a linked list since access to
    477       elements are O(1).
    478 
    479    list comprehension
    480       A compact way to process all or part of the elements in a sequence and
    481       return a list with the results.  ``result = ["0x%02x" % x for x in
    482       range(256) if x % 2 == 0]`` generates a list of strings containing
    483       even hex numbers (0x..) in the range from 0 to 255. The :keyword:`if`
    484       clause is optional.  If omitted, all elements in ``range(256)`` are
    485       processed.
    486 
    487    loader
    488       An object that loads a module. It must define a method named
    489       :meth:`load_module`. A loader is typically returned by a
    490       :term:`finder`. See :pep:`302` for details.
    491 
    492    mapping
    493       A container object that supports arbitrary key lookups and implements the
    494       methods specified in the :class:`~collections.Mapping` or
    495       :class:`~collections.MutableMapping`
    496       :ref:`abstract base classes <collections-abstract-base-classes>`.  Examples
    497       include :class:`dict`, :class:`collections.defaultdict`,
    498       :class:`collections.OrderedDict` and :class:`collections.Counter`.
    499 
    500    metaclass
    501       The class of a class.  Class definitions create a class name, a class
    502       dictionary, and a list of base classes.  The metaclass is responsible for
    503       taking those three arguments and creating the class.  Most object oriented
    504       programming languages provide a default implementation.  What makes Python
    505       special is that it is possible to create custom metaclasses.  Most users
    506       never need this tool, but when the need arises, metaclasses can provide
    507       powerful, elegant solutions.  They have been used for logging attribute
    508       access, adding thread-safety, tracking object creation, implementing
    509       singletons, and many other tasks.
    510 
    511       More information can be found in :ref:`metaclasses`.
    512 
    513    method
    514       A function which is defined inside a class body.  If called as an attribute
    515       of an instance of that class, the method will get the instance object as
    516       its first :term:`argument` (which is usually called ``self``).
    517       See :term:`function` and :term:`nested scope`.
    518 
    519    method resolution order
    520       Method Resolution Order is the order in which base classes are searched
    521       for a member during lookup. See `The Python 2.3 Method Resolution Order
    522       <https://www.python.org/download/releases/2.3/mro/>`_ for details of the
    523       algorithm used by the Python interpreter since the 2.3 release.
    524 
    525    module
    526       An object that serves as an organizational unit of Python code.  Modules
    527       have a namespace containing arbitrary Python objects.  Modules are loaded
    528       into Python by the process of :term:`importing`.
    529 
    530       See also :term:`package`.
    531 
    532    MRO
    533       See :term:`method resolution order`.
    534 
    535    mutable
    536       Mutable objects can change their value but keep their :func:`id`.  See
    537       also :term:`immutable`.
    538 
    539    named tuple
    540       Any tuple-like class whose indexable elements are also accessible using
    541       named attributes (for example, :func:`time.localtime` returns a
    542       tuple-like object where the *year* is accessible either with an
    543       index such as ``t[0]`` or with a named attribute like ``t.tm_year``).
    544 
    545       A named tuple can be a built-in type such as :class:`time.struct_time`,
    546       or it can be created with a regular class definition.  A full featured
    547       named tuple can also be created with the factory function
    548       :func:`collections.namedtuple`.  The latter approach automatically
    549       provides extra features such as a self-documenting representation like
    550       ``Employee(name='jones', title='programmer')``.
    551 
    552    namespace
    553       The place where a variable is stored.  Namespaces are implemented as
    554       dictionaries.  There are the local, global and built-in namespaces as well
    555       as nested namespaces in objects (in methods).  Namespaces support
    556       modularity by preventing naming conflicts.  For instance, the functions
    557       :func:`__builtin__.open` and :func:`os.open` are distinguished by their
    558       namespaces.  Namespaces also aid readability and maintainability by making
    559       it clear which module implements a function.  For instance, writing
    560       :func:`random.seed` or :func:`itertools.izip` makes it clear that those
    561       functions are implemented by the :mod:`random` and :mod:`itertools`
    562       modules, respectively.
    563 
    564    nested scope
    565       The ability to refer to a variable in an enclosing definition.  For
    566       instance, a function defined inside another function can refer to
    567       variables in the outer function.  Note that nested scopes work only for
    568       reference and not for assignment which will always write to the innermost
    569       scope.  In contrast, local variables both read and write in the innermost
    570       scope.  Likewise, global variables read and write to the global namespace.
    571 
    572    new-style class
    573       Any class which inherits from :class:`object`.  This includes all built-in
    574       types like :class:`list` and :class:`dict`.  Only new-style classes can
    575       use Python's newer, versatile features like :attr:`~object.__slots__`,
    576       descriptors, properties, and :meth:`__getattribute__`.
    577 
    578       More information can be found in :ref:`newstyle`.
    579 
    580    object
    581       Any data with state (attributes or value) and defined behavior
    582       (methods).  Also the ultimate base class of any :term:`new-style
    583       class`.
    584 
    585    package
    586       A Python :term:`module` which can contain submodules or recursively,
    587       subpackages.  Technically, a package is a Python module with an
    588       ``__path__`` attribute.
    589 
    590    parameter
    591       A named entity in a :term:`function` (or method) definition that
    592       specifies an :term:`argument` (or in some cases, arguments) that the
    593       function can accept.  There are four types of parameters:
    594 
    595       * :dfn:`positional-or-keyword`: specifies an argument that can be passed
    596         either :term:`positionally <argument>` or as a :term:`keyword argument
    597         <argument>`.  This is the default kind of parameter, for example *foo*
    598         and *bar* in the following::
    599 
    600            def func(foo, bar=None): ...
    601 
    602       * :dfn:`positional-only`: specifies an argument that can be supplied only
    603         by position.  Python has no syntax for defining positional-only
    604         parameters.  However, some built-in functions have positional-only
    605         parameters (e.g. :func:`abs`).
    606 
    607       * :dfn:`var-positional`: specifies that an arbitrary sequence of
    608         positional arguments can be provided (in addition to any positional
    609         arguments already accepted by other parameters).  Such a parameter can
    610         be defined by prepending the parameter name with ``*``, for example
    611         *args* in the following::
    612 
    613            def func(*args, **kwargs): ...
    614 
    615       * :dfn:`var-keyword`: specifies that arbitrarily many keyword arguments
    616         can be provided (in addition to any keyword arguments already accepted
    617         by other parameters).  Such a parameter can be defined by prepending
    618         the parameter name with ``**``, for example *kwargs* in the example
    619         above.
    620 
    621       Parameters can specify both optional and required arguments, as well as
    622       default values for some optional arguments.
    623 
    624       See also the :term:`argument` glossary entry, the FAQ question on
    625       :ref:`the difference between arguments and parameters
    626       <faq-argument-vs-parameter>`, and the :ref:`function` section.
    627 
    628    positional argument
    629       See :term:`argument`.
    630 
    631    Python 3000
    632       Nickname for the Python 3.x release line (coined long ago when the release
    633       of version 3 was something in the distant future.)  This is also
    634       abbreviated "Py3k".
    635 
    636    Pythonic
    637       An idea or piece of code which closely follows the most common idioms
    638       of the Python language, rather than implementing code using concepts
    639       common to other languages.  For example, a common idiom in Python is
    640       to loop over all elements of an iterable using a :keyword:`for`
    641       statement.  Many other languages don't have this type of construct, so
    642       people unfamiliar with Python sometimes use a numerical counter instead::
    643 
    644           for i in range(len(food)):
    645               print food[i]
    646 
    647       As opposed to the cleaner, Pythonic method::
    648 
    649          for piece in food:
    650              print piece
    651 
    652    reference count
    653       The number of references to an object.  When the reference count of an
    654       object drops to zero, it is deallocated.  Reference counting is
    655       generally not visible to Python code, but it is a key element of the
    656       :term:`CPython` implementation.  The :mod:`sys` module defines a
    657       :func:`~sys.getrefcount` function that programmers can call to return the
    658       reference count for a particular object.
    659 
    660    __slots__
    661       A declaration inside a :term:`new-style class` that saves memory by
    662       pre-declaring space for instance attributes and eliminating instance
    663       dictionaries.  Though popular, the technique is somewhat tricky to get
    664       right and is best reserved for rare cases where there are large numbers of
    665       instances in a memory-critical application.
    666 
    667    sequence
    668       An :term:`iterable` which supports efficient element access using integer
    669       indices via the :meth:`__getitem__` special method and defines a
    670       :meth:`len` method that returns the length of the sequence.
    671       Some built-in sequence types are :class:`list`, :class:`str`,
    672       :class:`tuple`, and :class:`unicode`. Note that :class:`dict` also
    673       supports :meth:`__getitem__` and :meth:`__len__`, but is considered a
    674       mapping rather than a sequence because the lookups use arbitrary
    675       :term:`immutable` keys rather than integers.
    676 
    677    slice
    678       An object usually containing a portion of a :term:`sequence`.  A slice is
    679       created using the subscript notation, ``[]`` with colons between numbers
    680       when several are given, such as in ``variable_name[1:3:5]``.  The bracket
    681       (subscript) notation uses :class:`slice` objects internally (or in older
    682       versions, :meth:`__getslice__` and :meth:`__setslice__`).
    683 
    684    special method
    685       A method that is called implicitly by Python to execute a certain
    686       operation on a type, such as addition.  Such methods have names starting
    687       and ending with double underscores.  Special methods are documented in
    688       :ref:`specialnames`.
    689 
    690    statement
    691       A statement is part of a suite (a "block" of code).  A statement is either
    692       an :term:`expression` or one of several constructs with a keyword, such
    693       as :keyword:`if`, :keyword:`while` or :keyword:`for`.
    694 
    695    struct sequence
    696       A tuple with named elements. Struct sequences expose an interface similiar
    697       to :term:`named tuple` in that elements can either be accessed either by
    698       index or as an attribute. However, they do not have any of the named tuple
    699       methods like :meth:`~collections.somenamedtuple._make` or
    700       :meth:`~collections.somenamedtuple._asdict`. Examples of struct sequences
    701       include :data:`sys.float_info` and the return value of :func:`os.stat`.
    702 
    703    triple-quoted string
    704       A string which is bound by three instances of either a quotation mark
    705       (") or an apostrophe (').  While they don't provide any functionality
    706       not available with single-quoted strings, they are useful for a number
    707       of reasons.  They allow you to include unescaped single and double
    708       quotes within a string and they can span multiple lines without the
    709       use of the continuation character, making them especially useful when
    710       writing docstrings.
    711 
    712    type
    713       The type of a Python object determines what kind of object it is; every
    714       object has a type.  An object's type is accessible as its
    715       :attr:`~instance.__class__` attribute or can be retrieved with
    716       ``type(obj)``.
    717 
    718    universal newlines
    719       A manner of interpreting text streams in which all of the following are
    720       recognized as ending a line: the Unix end-of-line convention ``'\n'``,
    721       the Windows convention ``'\r\n'``, and the old Macintosh convention
    722       ``'\r'``.  See :pep:`278` and :pep:`3116`, as well as
    723       :func:`str.splitlines` for an additional use.
    724 
    725    virtual environment
    726       A cooperatively isolated runtime environment that allows Python users
    727       and applications to install and upgrade Python distribution packages
    728       without interfering with the behaviour of other Python applications
    729       running on the same system.
    730 
    731    virtual machine
    732       A computer defined entirely in software.  Python's virtual machine
    733       executes the :term:`bytecode` emitted by the bytecode compiler.
    734 
    735    Zen of Python
    736       Listing of Python design principles and philosophies that are helpful in
    737       understanding and using the language.  The listing can be found by typing
    738       "``import this``" at the interactive prompt.
    739