blob: c8082d531c035fe7f2294c71cd0f9970a0491260 [file] [log] [blame]
Skip Montanaro757dedc2003-09-24 16:51:23 +00001\chapter{Glossary\label{glossary}}
2
3%%% keep the entries sorted and include at least one \index{} item for each
Raymond Hettinger5a25aa62003-09-27 05:42:14 +00004%%% cross-references are marked with \emph{entry}
Skip Montanaro757dedc2003-09-24 16:51:23 +00005
6\begin{description}
7
Skip Montanaro757dedc2003-09-24 16:51:23 +00008
9\index{>>>}
Fred Draked4a14192003-09-27 18:59:43 +000010\item[\code{>\code{>}>}]
11The typical Python prompt of the interactive shell. Often seen for
12code examples that can be tried right away in the interpreter.
Skip Montanaro757dedc2003-09-24 16:51:23 +000013
Raymond Hettinger43b5e402003-09-27 20:19:02 +000014\index{...}
15\item[\code{.\code{.}.}]
16The typical Python prompt of the interactive shell when entering code
17for an indented code block.
Skip Montanaro757dedc2003-09-24 16:51:23 +000018
19\index{BDFL}
Fred Draked4a14192003-09-27 18:59:43 +000020\item[BDFL]
21Benevolent Dictator For Life, a.k.a. \ulink{Guido van
Raymond Hettinger43b5e402003-09-27 20:19:02 +000022Rossum}{http://www.python.org/\textasciitilde{}guido/}, Python's creator.
Skip Montanaro757dedc2003-09-24 16:51:23 +000023
24\index{byte code}
Fred Draked4a14192003-09-27 18:59:43 +000025\item[byte code]
26The internal representation of a Python program in the interpreter.
Raymond Hettingerf7554322005-08-21 12:35:29 +000027The byte code is also cached in \code{.pyc} and \code{.pyo}
Fred Draked4a14192003-09-27 18:59:43 +000028files so that executing the same file is faster the second time
Raymond Hettingerf7554322005-08-21 12:35:29 +000029(recompilation from source to byte code can be avoided). This
Raymond Hettinger43b5e402003-09-27 20:19:02 +000030``intermediate language'' is said to run on a ``virtual
31machine'' that calls the subroutines corresponding to each bytecode.
Skip Montanaro757dedc2003-09-24 16:51:23 +000032
33\index{classic class}
Fred Draked4a14192003-09-27 18:59:43 +000034\item[classic class]
35Any class which does not inherit from \class{object}. See
36\emph{new-style class}.
Skip Montanaro757dedc2003-09-24 16:51:23 +000037
38\index{coercion}
Fred Draked4a14192003-09-27 18:59:43 +000039\item[coercion]
Skip Montanarodbb40782004-03-27 18:23:11 +000040The implicit conversion of an instance of one type to another during an
41operation which involves two arguments of the same type. For example,
Raymond Hettinger65a350d2004-12-02 07:29:43 +000042{}\code{int(3.15)} converts the floating point number to the integer
Skip Montanarodbb40782004-03-27 18:23:11 +000043{}\code{3}, but in {}\code{3+4.5}, each argument is of a different type (one
44int, one float), and both must be converted to the same type before they can
45be added or it will raise a {}\code{TypeError}. Coercion between two
46operands can be performed with the {}\code{coerce} builtin function; thus,
47{}\code{3+4.5} is equivalent to calling {}\code{operator.add(*coerce(3,
484.5))} and results in {}\code{operator.add(3.0, 4.5)}. Without coercion,
49all arguments of even compatible types would have to be normalized to the
50same value by the programmer, e.g., {}\code{float(3)+4.5} rather than just
51{}\code{3+4.5}.
52
53\index{complex number}
54\item[complex number]
Skip Montanarodbb40782004-03-27 18:23:11 +000055An extension of the familiar real number system in which all numbers are
56expressed as a sum of a real part and an imaginary part. Imaginary numbers
57are real multiples of the imaginary unit (the square root of {}\code{-1}),
58often written {}\code{i} in mathematics or {}\code{j} in engineering.
59Python has builtin support for complex numbers, which are written with this
60latter notation; the imaginary part is written with a {}\code{j} suffix,
61e.g., {}\code{3+1j}. To get access to complex equivalents of the
62{}\module{math} module, use {}\module{cmath}. Use of complex numbers is a
Andrew M. Kuchlingaeaec8d2004-03-29 01:19:54 +000063fairly advanced mathematical feature. If you're not aware of a need for them,
Raymond Hettingerf13c0242004-03-28 22:44:09 +000064it's almost certain you can safely ignore them.
Skip Montanaro757dedc2003-09-24 16:51:23 +000065
66\index{descriptor}
Fred Draked4a14192003-09-27 18:59:43 +000067\item[descriptor]
68Any \emph{new-style} object that defines the methods
69{}\method{__get__()}, \method{__set__()}, or \method{__delete__()}.
70When a class attribute is a descriptor, its special binding behavior
71is triggered upon attribute lookup. Normally, writing \var{a.b} looks
72up the object \var{b} in the class dictionary for \var{a}, but if
73{}\var{b} is a descriptor, the defined method gets called.
74Understanding descriptors is a key to a deep understanding of Python
75because they are the basis for many features including functions,
76methods, properties, class methods, static methods, and reference to
77super classes.
Skip Montanaro757dedc2003-09-24 16:51:23 +000078
79\index{dictionary}
Fred Draked4a14192003-09-27 18:59:43 +000080\item[dictionary]
81An associative array, where arbitrary keys are mapped to values. The
82use of \class{dict} much resembles that for \class{list}, but the keys
83can be any object with a \method{__hash__()} function, not just
84integers starting from zero. Called a hash in Perl.
Skip Montanaro757dedc2003-09-24 16:51:23 +000085
Raymond Hettingerd4f5b072005-01-11 16:11:13 +000086\index{duck-typing}
Raymond Hettinger0f439832005-05-14 17:18:31 +000087\item[duck-typing]
Raymond Hettingerd4f5b072005-01-11 16:11:13 +000088Pythonic programming style that determines an object's type by inspection
89of its method or attribute signature rather than by explicit relationship
90to some type object ("If it looks like a duck and quacks like a duck, it
91must be a duck.") By emphasizing interfaces rather than specific types,
92well-designed code improves its flexibility by allowing polymorphic
93substitution. Duck-typing avoids tests using \function{type()} or
94\function{isinstance()}. Instead, it typically employs
95\function{hasattr()} tests or {}\emph{EAFP} programming.
96
Skip Montanaro757dedc2003-09-24 16:51:23 +000097\index{EAFP}
Fred Draked4a14192003-09-27 18:59:43 +000098\item[EAFP]
99Easier to ask for forgiveness than permission. This common Python
100coding style assumes the existence of valid keys or attributes and
101catches exceptions if the assumption proves false. This clean and
102fast style is characterized by the presence of many \keyword{try} and
103{}\keyword{except} statements. The technique contrasts with the
104{}\emph{LBYL} style that is common in many other languages such as C.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000105
106\index{__future__}
Fred Draked4a14192003-09-27 18:59:43 +0000107\item[__future__]
108A pseudo module which programmers can use to enable new language
109features which are not compatible with the current interpreter. For
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000110example, the expression \code{11/4} currently evaluates to \code{2}.
111If the module in which it is executed had enabled \emph{true division}
Fred Draked4a14192003-09-27 18:59:43 +0000112by executing:
Skip Montanaro757dedc2003-09-24 16:51:23 +0000113
114\begin{verbatim}
115from __future__ import division
116\end{verbatim}
117
Raymond Hettingerf7554322005-08-21 12:35:29 +0000118the expression \code{11/4} would evaluate to \code{2.75}. By
Fred Drake984920b2003-09-28 19:03:36 +0000119importing the \ulink{\module{__future__}}{../lib/module-future.html}
120module and evaluating its variables, you can see when a new feature
121was first added to the language and when it will become the default:
Skip Montanaro757dedc2003-09-24 16:51:23 +0000122
123\begin{verbatim}
124>>> import __future__
125>>> __future__.division
126_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
127\end{verbatim}
128
129\index{generator}
Fred Draked4a14192003-09-27 18:59:43 +0000130\item[generator]
Skip Montanarodbb40782004-03-27 18:23:11 +0000131A function that returns an iterator. It looks like a normal function except
132that values are returned to the caller using a \keyword{yield} statement
133instead of a {}\keyword{return} statement. Generator functions often
134contain one or more {}\keyword{for} or \keyword{while} loops that
135\keyword{yield} elements back to the caller. The function execution is
136stopped at the {}\keyword{yield} keyword (returning the result) and is
137resumed there when the next element is requested by calling the
138\method{next()} method of the returned iterator.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000139
Raymond Hettingerd3481932004-06-07 21:52:47 +0000140\index{generator expression}
141\item[generator expression]
142An expression that returns a generator. It looks like a normal expression
143followed by a \keyword{for} expression defining a loop variable, range, and
144an optional \keyword{if} expression. The combined expression generates
145values for an enclosing function:
146
147\begin{verbatim}
148>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
149285
150\end{verbatim}
151
Skip Montanaro757dedc2003-09-24 16:51:23 +0000152\index{GIL}
Fred Draked4a14192003-09-27 18:59:43 +0000153\item[GIL]
154See \emph{global interpreter lock}.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000155
156\index{global interpreter lock}
Fred Draked4a14192003-09-27 18:59:43 +0000157\item[global interpreter lock]
158The lock used by Python threads to assure that only one thread can be
159run at a time. This simplifies Python by assuring that no two
160processes can access the same memory at the same time. Locking the
161entire interpreter makes it easier for the interpreter to be
Skip Montanaro757dedc2003-09-24 16:51:23 +0000162multi-threaded, at the expense of some parallelism on multi-processor
Fred Draked4a14192003-09-27 18:59:43 +0000163machines. Efforts have been made in the past to create a
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000164``free-threaded'' interpreter (one which locks shared data at a much
Fred Draked4a14192003-09-27 18:59:43 +0000165finer granularity), but performance suffered in the common
166single-processor case.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000167
168\index{IDLE}
Fred Draked4a14192003-09-27 18:59:43 +0000169\item[IDLE]
170An Integrated Development Environment for Python. IDLE is a
Raymond Hettinger5a25aa62003-09-27 05:42:14 +0000171basic editor and interpreter environment that ships with the standard
172distribution of Python. Good for beginners, it also serves as clear
173example code for those wanting to implement a moderately
Fred Draked4a14192003-09-27 18:59:43 +0000174sophisticated, multi-platform GUI application.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000175
176\index{immutable}
Fred Draked4a14192003-09-27 18:59:43 +0000177\item[immutable]
Skip Montanarodbb40782004-03-27 18:23:11 +0000178An object with fixed value. Immutable objects are numbers, strings or
Fred Draked4a14192003-09-27 18:59:43 +0000179tuples (and more). Such an object cannot be altered. A new object
Skip Montanaro757dedc2003-09-24 16:51:23 +0000180has to be created if a different value has to be stored. They play an
Raymond Hettinger65a350d2004-12-02 07:29:43 +0000181important role in places where a constant hash value is needed, for
Fred Draked4a14192003-09-27 18:59:43 +0000182example as a key in a dictionary.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000183
184\index{integer division}
Fred Draked4a14192003-09-27 18:59:43 +0000185\item[integer division]
186Mathematical division discarding any remainder. For example, the
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000187expression \code{11/4} currently evaluates to \code{2} in contrast
Fred Draked4a14192003-09-27 18:59:43 +0000188to the \code{2.75} returned by float division. Also called
189{}\emph{floor division}. When dividing two integers the outcome will
190always be another integer (having the floor function applied to it).
191However, if one of the operands is another numeric type (such as a
192{}\class{float}), the result will be coerced (see \emph{coercion}) to
Skip Montanarodbb40782004-03-27 18:23:11 +0000193a common type. For example, an integer divided by a float will result
Fred Draked4a14192003-09-27 18:59:43 +0000194in a float value, possibly with a decimal fraction. Integer division
195can be forced by using the \code{//} operator instead of the \code{/}
196operator. See also \emph{__future__}.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000197
198\index{interactive}
Fred Draked4a14192003-09-27 18:59:43 +0000199\item[interactive]
200Python has an interactive interpreter which means that you can try out
Raymond Hettinger65a350d2004-12-02 07:29:43 +0000201things and immediately see their results. Just launch \code{python} with no
Fred Draked4a14192003-09-27 18:59:43 +0000202arguments (possibly by selecting it from your computer's main menu).
203It is a very powerful way to test out new ideas or inspect modules and
204packages (remember \code{help(x)}).
Skip Montanaro757dedc2003-09-24 16:51:23 +0000205
206\index{interpreted}
Fred Draked4a14192003-09-27 18:59:43 +0000207\item[interpreted]
Skip Montanarodbb40782004-03-27 18:23:11 +0000208Python is an interpreted language, as opposed to a compiled one. This means
209that the source files can be run directly without first creating an
210executable which is then run. Interpreted languages typically have a
211shorter development/debug cycle than compiled ones, though their programs
212generally also run more slowly. See also {}\emph{interactive}.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000213
214\index{iterable}
Fred Draked4a14192003-09-27 18:59:43 +0000215\item[iterable]
216A container object capable of returning its members one at a time.
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000217Examples of iterables include all sequence types (such as \class{list},
Raymond Hettinger5a25aa62003-09-27 05:42:14 +0000218{}\class{str}, and \class{tuple}) and some non-sequence types like
Fred Draked4a14192003-09-27 18:59:43 +0000219{}\class{dict} and \class{file} and objects of any classes you define
220with an \method{__iter__()} or \method{__getitem__()} method. Iterables
221can be used in a \keyword{for} loop and in many other places where a
222sequence is needed (\function{zip()}, \function{map()}, ...). When an
223iterable object is passed as an argument to the builtin function
224{}\function{iter()}, it returns an iterator for the object. This
225iterator is good for one pass over the set of values. When using
226iterables, it is usually not necessary to call \function{iter()} or
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000227deal with iterator objects yourself. The \code{for} statement does
Fred Draked4a14192003-09-27 18:59:43 +0000228that automatically for you, creating a temporary unnamed variable to
229hold the iterator for the duration of the loop. See also
230{}\emph{iterator}, \emph{sequence}, and \emph{generator}.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000231
232\index{iterator}
Fred Draked4a14192003-09-27 18:59:43 +0000233\item[iterator]
234An object representing a stream of data. Repeated calls to the
235iterator's \method{next()} method return successive items in the
Skip Montanaro757dedc2003-09-24 16:51:23 +0000236stream. When no more data is available a \exception{StopIteration}
Fred Draked4a14192003-09-27 18:59:43 +0000237exception is raised instead. At this point, the iterator object is
238exhausted and any further calls to its \method{next()} method just
239raise \exception{StopIteration} again. Iterators are required to have
240an \method{__iter__()} method that returns the iterator object
241itself so every iterator is also iterable and may be used in most
242places where other iterables are accepted. One notable exception is
243code that attempts multiple iteration passes. A container object
244(such as a \class{list}) produces a fresh new iterator each time you
245pass it to the \function{iter()} function or use it in a
246{}\keyword{for} loop. Attempting this with an iterator will just
Raymond Hettinger65a350d2004-12-02 07:29:43 +0000247return the same exhausted iterator object used in the previous iteration
Fred Draked4a14192003-09-27 18:59:43 +0000248pass, making it appear like an empty container.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000249
Raymond Hettingerf7554322005-08-21 12:35:29 +0000250\index{LBYL}
251\item[LBYL]
252Look before you leap. This coding style explicitly tests for
253pre-conditions before making calls or lookups. This style contrasts
254with the \emph{EAFP} approach and is characterized by the presence of
255many \keyword{if} statements.
256
Skip Montanaro757dedc2003-09-24 16:51:23 +0000257\index{list comprehension}
Fred Draked4a14192003-09-27 18:59:43 +0000258\item[list comprehension]
259A compact way to process all or a subset of elements in a sequence and
260return a list with the results. \code{result = ["0x\%02x"
Skip Montanaro757dedc2003-09-24 16:51:23 +0000261\% x for x in range(256) if x \% 2 == 0]} generates a list of strings
262containing hex numbers (0x..) that are even and in the range from 0 to 255.
263The \keyword{if} clause is optional. If omitted, all elements in
Raymond Hettinger65a350d2004-12-02 07:29:43 +0000264{}\code{range(256)} are processed.
265
Skip Montanaro757dedc2003-09-24 16:51:23 +0000266\index{mapping}
Fred Draked4a14192003-09-27 18:59:43 +0000267\item[mapping]
268A container object (such as \class{dict}) that supports arbitrary key
269lookups using the special method \method{__getitem__()}.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000270
271\index{metaclass}
Fred Draked4a14192003-09-27 18:59:43 +0000272\item[metaclass]
273The class of a class. Class definitions create a class name, a class
274dictionary, and a list of base classes. The metaclass is responsible
275for taking those three arguments and creating the class. Most object
276oriented programming languages provide a default implementation. What
277makes Python special is that it is possible to create custom
278metaclasses. Most users never need this tool, but when the need
279arises, metaclasses can provide powerful, elegant solutions. They
280have been used for logging attribute access, adding thread-safety,
281tracking object creation, implementing singletons, and many other
282tasks.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000283
Skip Montanaro757dedc2003-09-24 16:51:23 +0000284\index{mutable}
Fred Draked4a14192003-09-27 18:59:43 +0000285\item[mutable]
286Mutable objects can change their value but keep their \function{id()}.
287See also \emph{immutable}.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000288
289\index{namespace}
Fred Draked4a14192003-09-27 18:59:43 +0000290\item[namespace]
291The place where a variable is stored. Namespaces are implemented as
Raymond Hettinger65a350d2004-12-02 07:29:43 +0000292dictionaries. There are the local, global and builtin namespaces
Raymond Hettingerf7554322005-08-21 12:35:29 +0000293as well as nested namespaces in objects (in methods). Namespaces support
Fred Draked4a14192003-09-27 18:59:43 +0000294modularity by preventing naming conflicts. For instance, the
295functions \function{__builtin__.open()} and \function{os.open()} are
296distinguished by their namespaces. Namespaces also aid readability
Raymond Hettingerf7554322005-08-21 12:35:29 +0000297and maintainability by making it clear which module implements a
Fred Draked4a14192003-09-27 18:59:43 +0000298function. For instance, writing \function{random.seed()} or
299{}\function{itertools.izip()} makes it clear that those functions are
Fred Drake984920b2003-09-28 19:03:36 +0000300implemented by the \ulink{\module{random}}{../lib/module-random.html}
301and \ulink{\module{itertools}}{../lib/module-itertools.html} modules
302respectively.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000303
304\index{nested scope}
Fred Draked4a14192003-09-27 18:59:43 +0000305\item[nested scope]
306The ability to refer to a variable in an enclosing definition. For
307instance, a function defined inside another function can refer to
308variables in the outer function. Note that nested scopes work only
Skip Montanaro757dedc2003-09-24 16:51:23 +0000309for reference and not for assignment which will always write to the
Fred Draked4a14192003-09-27 18:59:43 +0000310innermost scope. In contrast, local variables both read and write in
311the innermost scope. Likewise, global variables read and write to the
312global namespace.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000313
314\index{new-style class}
Fred Draked4a14192003-09-27 18:59:43 +0000315\item[new-style class]
316Any class that inherits from \class{object}. This includes all
317built-in types like \class{list} and \class{dict}. Only new-style
318classes can use Python's newer, versatile features like
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000319{}\method{__slots__}, descriptors, properties,
Fred Draked4a14192003-09-27 18:59:43 +0000320\method{__getattribute__()}, class methods, and static methods.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000321
322\index{Python3000}
Fred Draked4a14192003-09-27 18:59:43 +0000323\item[Python3000]
Raymond Hettingerf7554322005-08-21 12:35:29 +0000324A mythical python release, not required to be backward compatible, with
Fred Draked4a14192003-09-27 18:59:43 +0000325telepathic interface.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000326
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000327\index{__slots__}
328\item[__slots__]
329A declaration inside a \emph{new-style class} that saves memory by
330pre-declaring space for instance attributes and eliminating instance
331dictionaries. Though popular, the technique is somewhat tricky to get
332right and is best reserved for rare cases where there are large
Raymond Hettinger65a350d2004-12-02 07:29:43 +0000333numbers of instances in a memory-critical application.
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000334
Skip Montanaro757dedc2003-09-24 16:51:23 +0000335\index{sequence}
Fred Draked4a14192003-09-27 18:59:43 +0000336\item[sequence]
337An \emph{iterable} which supports efficient element access using
338integer indices via the \method{__getitem__()} and
339{}\method{__len__()} special methods. Some built-in sequence types
340are \class{list}, \class{str}, \class{tuple}, and \class{unicode}.
341Note that \class{dict} also supports \method{__getitem__()} and
342{}\method{__len__()}, but is considered a mapping rather than a
343sequence because the lookups use arbitrary \emph{immutable} keys
344rather than integers.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000345
346\index{Zen of Python}
Fred Draked4a14192003-09-27 18:59:43 +0000347\item[Zen of Python]
348Listing of Python design principles and philosophies that are helpful
349in understanding and using the language. The listing can be found by
Raymond Hettinger43b5e402003-09-27 20:19:02 +0000350typing ``\code{import this}'' at the interactive prompt.
Skip Montanaro757dedc2003-09-24 16:51:23 +0000351
352\end{description}