summaryrefslogtreecommitdiffstats
path: root/Doc/tutorial/glossary.rst
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/tutorial/glossary.rst')
-rw-r--r--Doc/tutorial/glossary.rst329
1 files changed, 329 insertions, 0 deletions
diff --git a/Doc/tutorial/glossary.rst b/Doc/tutorial/glossary.rst
new file mode 100644
index 0000000..c05d68d
--- /dev/null
+++ b/Doc/tutorial/glossary.rst
@@ -0,0 +1,329 @@
+
+.. _tut-glossary:
+
+********
+Glossary
+********
+
+.. % %% keep the entries sorted and include at least one \index{} item for each
+.. % %% cross-references are marked with \emph{entry}
+
+``>>>``
+ The typical Python prompt of the interactive shell. Often seen for code
+ examples that can be tried right away in the interpreter.
+
+ .. index:: single: ...
+
+``...``
+ The typical Python prompt of the interactive shell when entering code for an
+ indented code block.
+
+ .. index:: single: BDFL
+
+BDFL
+ Benevolent Dictator For Life, a.k.a. `Guido van Rossum
+ <http://www.python.org/~guido/>`_, Python's creator.
+
+ .. index:: single: byte code
+
+byte code
+ The internal representation of a Python program in the interpreter. The byte
+ code is also cached in ``.pyc`` and ``.pyo`` files so that executing the same
+ file is faster the second time (recompilation from source to byte code can be
+ avoided). This "intermediate language" is said to run on a "virtual machine"
+ that calls the subroutines corresponding to each bytecode.
+
+ .. index:: single: classic class
+
+classic class
+ Any class which does not inherit from :class:`object`. See *new-style class*.
+
+ .. index:: single: complex number
+
+complex number
+ An extension of the familiar real number system in which all numbers are
+ expressed as a sum of a real part and an imaginary part. Imaginary numbers are
+ real multiples of the imaginary unit (the square root of ``-1``), often written
+ ``i`` in mathematics or ``j`` in engineering. Python has builtin support for
+ complex numbers, which are written with this latter notation; the imaginary part
+ is written with a ``j`` suffix, e.g., ``3+1j``. To get access to complex
+ equivalents of the :mod:`math` module, use :mod:`cmath`. Use of complex numbers
+ is a fairly advanced mathematical feature. If you're not aware of a need for
+ them, it's almost certain you can safely ignore them.
+
+ .. index:: single: descriptor
+
+descriptor
+ Any *new-style* object that defines the methods :meth:`__get__`,
+ :meth:`__set__`, or :meth:`__delete__`. When a class attribute is a descriptor,
+ its special binding behavior is triggered upon attribute lookup. Normally,
+ writing *a.b* looks up the object *b* in the class dictionary for *a*, but if
+ *b* is a descriptor, the defined method gets called. Understanding descriptors
+ is a key to a deep understanding of Python because they are the basis for many
+ features including functions, methods, properties, class methods, static
+ methods, and reference to super classes.
+
+ .. index:: single: dictionary
+
+dictionary
+ An associative array, where arbitrary keys are mapped to values. The use of
+ :class:`dict` much resembles that for :class:`list`, but the keys can be any
+ object with a :meth:`__hash__` function, not just integers starting from zero.
+ Called a hash in Perl.
+
+ .. index:: single: duck-typing
+
+duck-typing
+ Pythonic programming style that determines an object's type by inspection of its
+ method or attribute signature rather than by explicit relationship to some type
+ object ("If it looks like a duck and quacks like a duck, it must be a duck.")
+ By emphasizing interfaces rather than specific types, well-designed code
+ improves its flexibility by allowing polymorphic substitution. Duck-typing
+ avoids tests using :func:`type` or :func:`isinstance`. Instead, it typically
+ employs :func:`hasattr` tests or *EAFP* programming.
+
+ .. index:: single: EAFP
+
+EAFP
+ Easier to ask for forgiveness than permission. This common Python coding style
+ assumes the existence of valid keys or attributes and catches exceptions if the
+ assumption proves false. This clean and fast style is characterized by the
+ presence of many :keyword:`try` and :keyword:`except` statements. The technique
+ contrasts with the *LBYL* style that is common in many other languages such as
+ C.
+
+ .. index:: single: __future__
+
+__future__
+ A pseudo module which programmers can use to enable new language features which
+ are not compatible with the current interpreter. To enable ``new_feature`` ::
+
+ from __future__ import new_feature
+
+ By importing the :mod:`__future__` module and evaluating its variables, you
+ can see when a new feature was first added to the language and when it will
+ become the default::
+
+ >>> import __future__
+ >>> __future__.division
+ _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
+
+ .. index:: single: generator
+
+generator
+ A function that returns an iterator. It looks like a normal function except
+ that values are returned to the caller using a :keyword:`yield` statement
+ instead of a :keyword:`return` statement. Generator functions often contain one
+ or more :keyword:`for` or :keyword:`while` loops that :keyword:`yield` elements
+ back to the caller. The function execution is stopped at the :keyword:`yield`
+ keyword (returning the result) and is resumed there when the next element is
+ requested by calling the :meth:`__next__` method of the returned iterator.
+
+ .. index:: single: generator expression
+
+generator expression
+ An expression that returns a generator. It looks like a normal expression
+ followed by a :keyword:`for` expression defining a loop variable, range, and an
+ optional :keyword:`if` expression. The combined expression generates values for
+ an enclosing function::
+
+ >>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
+ 285
+
+ .. index:: single: GIL
+
+GIL
+ See *global interpreter lock*.
+
+ .. index:: single: global interpreter lock
+
+global interpreter lock
+ The lock used by Python threads to assure that only one thread can be run at
+ a time. This simplifies Python by assuring that no two processes can access
+ the same memory at the same time. Locking the entire interpreter makes it
+ easier for the interpreter to be multi-threaded, at the expense of some
+ parallelism on multi-processor machines. Efforts have been made in the past
+ to create a "free-threaded" interpreter (one which locks shared data at a
+ much finer granularity), but performance suffered in the common
+ single-processor case.
+
+ .. index:: single: IDLE
+
+IDLE
+ An Integrated Development Environment for Python. IDLE is a basic editor and
+ interpreter environment that ships with the standard distribution of Python.
+ Good for beginners, it also serves as clear example code for those wanting to
+ implement a moderately sophisticated, multi-platform GUI application.
+
+ .. index:: single: immutable
+
+immutable
+ An object with fixed value. Immutable objects are numbers, strings or tuples
+ (and more). Such an object cannot be altered. A new object has to be created
+ if a different value has to be stored. They play an important role in places
+ where a constant hash value is needed, for example as a key in a dictionary.
+
+ .. index:: single: integer division
+
+integer division
+ Mathematical division including any remainder. The result will always be a
+ float. For example, the expression ``11/4`` evaluates to ``2.75``. Integer
+ division can be forced by using the ``//`` operator instead of the ``/``
+ operator.
+
+ .. index:: single: interactive
+
+interactive
+ Python has an interactive interpreter which means that you can try out things
+ and immediately see their results. Just launch ``python`` with no arguments
+ (possibly by selecting it from your computer's main menu). It is a very powerful
+ way to test out new ideas or inspect modules and packages (remember
+ ``help(x)``).
+
+ .. index:: single: interpreted
+
+interpreted
+ Python is an interpreted language, as opposed to a compiled one. This means
+ that the source files can be run directly without first creating an executable
+ which is then run. Interpreted languages typically have a shorter
+ development/debug cycle than compiled ones, though their programs generally also
+ run more slowly. See also *interactive*.
+
+ .. index:: single: iterable
+
+iterable
+ A container object capable of returning its members one at a time. Examples of
+ iterables include all sequence types (such as :class:`list`, :class:`str`, and
+ :class:`tuple`) and some non-sequence types like :class:`dict` and :class:`file`
+ and objects of any classes you define with an :meth:`__iter__` or
+ :meth:`__getitem__` method. Iterables can be used in a :keyword:`for` loop and
+ in many other places where a sequence is needed (:func:`zip`, :func:`map`, ...).
+ When an iterable object is passed as an argument to the builtin function
+ :func:`iter`, it returns an iterator for the object. This iterator is good for
+ one pass over the set of values. When using iterables, it is usually not
+ necessary to call :func:`iter` or deal with iterator objects yourself. The
+ ``for`` statement does that automatically for you, creating a temporary unnamed
+ variable to hold the iterator for the duration of the loop. See also
+ *iterator*, *sequence*, and *generator*.
+
+ .. index:: single: iterator
+
+iterator
+ An object representing a stream of data. Repeated calls to the iterator's
+ :meth:`__next__` method return successive items in the stream. When no more
+ data is available a :exc:`StopIteration` exception is raised instead. At this
+ point, the iterator object is exhausted and any further calls to its
+ :meth:`__next__` method just raise :exc:`StopIteration` again. Iterators are
+ required to have an :meth:`__iter__` method that returns the iterator object
+ itself so every iterator is also iterable and may be used in most places where
+ other iterables are accepted. One notable exception is code that attempts
+ multiple iteration passes. A container object (such as a :class:`list`)
+ produces a fresh new iterator each time you pass it to the :func:`iter` function
+ or use it in a :keyword:`for` loop. Attempting this with an iterator will just
+ return the same exhausted iterator object used in the previous iteration pass,
+ making it appear like an empty container.
+
+ .. index:: single: LBYL
+
+LBYL
+ Look before you leap. This coding style explicitly tests for pre-conditions
+ before making calls or lookups. This style contrasts with the *EAFP* approach
+ and is characterized by the presence of many :keyword:`if` statements.
+
+ .. index:: single: list comprehension
+
+list comprehension
+ A compact way to process all or a subset of elements in a sequence and return a
+ list with the results. ``result = ["0x%02x" % x for x in range(256) if x % 2 ==
+ 0]`` generates a list of strings containing hex numbers (0x..) that are even and
+ in the range from 0 to 255. The :keyword:`if` clause is optional. If omitted,
+ all elements in ``range(256)`` are processed.
+
+ .. index:: single: mapping
+
+mapping
+ A container object (such as :class:`dict`) that supports arbitrary key lookups
+ using the special method :meth:`__getitem__`.
+
+ .. index:: single: metaclass
+
+metaclass
+ The class of a class. Class definitions create a class name, a class
+ dictionary, and a list of base classes. The metaclass is responsible for taking
+ those three arguments and creating the class. Most object oriented programming
+ languages provide a default implementation. What makes Python special is that
+ it is possible to create custom metaclasses. Most users never need this tool,
+ but when the need arises, metaclasses can provide powerful, elegant solutions.
+ They have been used for logging attribute access, adding thread-safety, tracking
+ object creation, implementing singletons, and many other tasks.
+
+ .. index:: single: mutable
+
+mutable
+ Mutable objects can change their value but keep their :func:`id`. See also
+ *immutable*.
+
+ .. index:: single: namespace
+
+namespace
+ The place where a variable is stored. Namespaces are implemented as
+ dictionaries. There are the local, global and builtin namespaces as well as
+ nested namespaces in objects (in methods). Namespaces support modularity by
+ preventing naming conflicts. For instance, the functions
+ :func:`__builtin__.open` and :func:`os.open` are distinguished by their
+ namespaces. Namespaces also aid readability and maintainability by making it
+ clear which module implements a function. For instance, writing
+ :func:`random.seed` or :func:`itertools.izip` makes it clear that those
+ functions are implemented by the :mod:`random` and :mod:`itertools` modules
+ respectively.
+
+ .. index:: single: nested scope
+
+nested scope
+ The ability to refer to a variable in an enclosing definition. For instance, a
+ function defined inside another function can refer to variables in the outer
+ function. Note that nested scopes work only for reference and not for
+ assignment which will always write to the innermost scope. In contrast, local
+ variables both read and write in the innermost scope. Likewise, global
+ variables read and write to the global namespace.
+
+ .. index:: single: new-style class
+
+new-style class
+ Any class that inherits from :class:`object`. This includes all built-in types
+ like :class:`list` and :class:`dict`. Only new-style classes can use Python's
+ newer, versatile features like :meth:`__slots__`, descriptors, properties,
+ :meth:`__getattribute__`, class methods, and static methods.
+
+ .. index:: single: Python3000
+
+Python3000
+ A mythical python release, not required to be backward compatible, with
+ telepathic interface.
+
+ .. index:: single: __slots__
+
+__slots__
+ A declaration inside a *new-style class* that saves memory by pre-declaring
+ space for instance attributes and eliminating instance dictionaries. Though
+ popular, the technique is somewhat tricky to get right and is best reserved for
+ rare cases where there are large numbers of instances in a memory-critical
+ application.
+
+ .. index:: single: sequence
+
+sequence
+ An *iterable* which supports efficient element access using integer indices via
+ the :meth:`__getitem__` and :meth:`__len__` special methods. Some built-in
+ sequence types are :class:`list`, :class:`str`, :class:`tuple`, and
+ :class:`unicode`. Note that :class:`dict` also supports :meth:`__getitem__` and
+ :meth:`__len__`, but is considered a mapping rather than a sequence because the
+ lookups use arbitrary *immutable* keys rather than integers.
+
+ .. index:: single: Zen of Python
+
+Zen of Python
+ Listing of Python design principles and philosophies that are helpful in
+ understanding and using the language. The listing can be found by typing
+ "``import this``" at the interactive prompt.
+