blob: 8c5cbcd9b7167885baf15c42920a36b12331f2c5 [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 ``>>>``
12 The typical Python prompt of the interactive shell. Often seen for code
13 examples that can be tried right away in the interpreter.
14
15 ``...``
16 The typical Python prompt of the interactive shell when entering code for
17 an indented code block.
Christian Heimesd8654cf2007-12-02 15:22:16 +000018
19 argument
20 A value passed to a function or method, assigned to a name local to
21 the body. A function or method may have both positional arguments and
22 keyword arguments in its definition. Positional and keyword arguments
23 may be variable-length: ``*`` accepts or passes (if in the function
24 definition or call) several positional arguments in a list, while ``**``
25 does the same for keyword arguments in a dictionary.
26
27 Any expression may be used within the argument list, and the evaluated
28 value is passed to the local variable.
Guido van Rossumf10aa982007-08-17 18:30:38 +000029
30 BDFL
31 Benevolent Dictator For Life, a.k.a. `Guido van Rossum
32 <http://www.python.org/~guido/>`_, Python's creator.
33
Georg Brandl9afde1c2007-11-01 20:32:30 +000034 bytecode
35 Python source code is compiled into bytecode, the internal representation
36 of a Python program in the interpreter. The bytecode is also cached in
37 ``.pyc`` and ``.pyo`` files so that executing the same file is faster the
38 second time (recompilation from source to bytecode can be avoided). This
39 "intermediate language" is said to run on a "virtual machine" that calls
40 the subroutines corresponding to each bytecode.
Guido van Rossumf10aa982007-08-17 18:30:38 +000041
42 classic class
Georg Brandl85eb8c12007-08-31 16:33:38 +000043 One of the two flavors of classes in earlier Python versions. Since
44 Python 3.0, there are no classic classes anymore.
Guido van Rossumf10aa982007-08-17 18:30:38 +000045
Guido van Rossumf10aa982007-08-17 18:30:38 +000046 complex number
47 An extension of the familiar real number system in which all numbers are
48 expressed as a sum of a real part and an imaginary part. Imaginary
49 numbers are real multiples of the imaginary unit (the square root of
50 ``-1``), often written ``i`` in mathematics or ``j`` in
51 engineering. Python has builtin support for complex numbers, which are
52 written with this latter notation; the imaginary part is written with a
53 ``j`` suffix, e.g., ``3+1j``. To get access to complex equivalents of the
54 :mod:`math` module, use :mod:`cmath`. Use of complex numbers is a fairly
55 advanced mathematical feature. If you're not aware of a need for them,
56 it's almost certain you can safely ignore them.
57
Christian Heimesd8654cf2007-12-02 15:22:16 +000058 decorator
59 A function returning another function, usually applied as a function
60 transformation using the ``@wrapper`` syntax. Common examples for
61 decorators are :func:`classmethod` and :func:`staticmethod`.
62
63 The decorator syntax is merely syntactic sugar, the following two
64 function definitions are semantically equivalent::
65
66 def f(...):
67 ...
68 f = staticmethod(f)
69
70 @staticmethod
71 def f(...):
72 ...
73
Guido van Rossumf10aa982007-08-17 18:30:38 +000074 descriptor
Georg Brandl85eb8c12007-08-31 16:33:38 +000075 An object that defines the methods :meth:`__get__`, :meth:`__set__`, or
76 :meth:`__delete__`. When a class attribute is a descriptor, its special
Georg Brandl9afde1c2007-11-01 20:32:30 +000077 binding behavior is triggered upon attribute lookup. Normally, using
78 *a.b* to get, set or delete an attribute looks up the object named *b* in
79 the class dictionary for *a*, but if *b* is a descriptor, the respective
80 descriptor method gets called. Understanding descriptors is a key to a
81 deep understanding of Python because they are the basis for many features
82 including functions, methods, properties, class methods, static methods,
83 and reference to super classes.
84
85 For more information about descriptors' methods, see :ref:`descriptors`.
Guido van Rossumf10aa982007-08-17 18:30:38 +000086
87 dictionary
88 An associative array, where arbitrary keys are mapped to values. The use
89 of :class:`dict` much resembles that for :class:`list`, but the keys can
90 be any object with a :meth:`__hash__` function, not just integers starting
91 from zero. Called a hash in Perl.
92
93 duck-typing
94 Pythonic programming style that determines an object's type by inspection
95 of its method or attribute signature rather than by explicit relationship
96 to some type object ("If it looks like a duck and quacks like a duck, it
97 must be a duck.") By emphasizing interfaces rather than specific types,
98 well-designed code improves its flexibility by allowing polymorphic
99 substitution. Duck-typing avoids tests using :func:`type` or
100 :func:`isinstance`. Instead, it typically employs :func:`hasattr` tests or
101 :term:`EAFP` programming.
102
103 EAFP
104 Easier to ask for forgiveness than permission. This common Python coding
105 style assumes the existence of valid keys or attributes and catches
106 exceptions if the assumption proves false. This clean and fast style is
107 characterized by the presence of many :keyword:`try` and :keyword:`except`
108 statements. The technique contrasts with the :term:`LBYL` style that is
109 common in many other languages such as C.
110
Christian Heimesd8654cf2007-12-02 15:22:16 +0000111 expression
112 A piece of syntax which can be evaluated to some value. In other words,
113 an expression is an accumulation of expression elements like literals, names,
114 attribute access, operators or function calls that all return a value.
115 In contrast to other languages, not all language constructs are expressions,
116 but there are also :term:`statement`\s that cannot be used as expressions,
117 such as :keyword:`print` or :keyword:`if`. Assignments are also not
118 expressions.
119
Guido van Rossumf10aa982007-08-17 18:30:38 +0000120 extension module
121 A module written in C, using Python's C API to interact with the core and
122 with user code.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000123
124 function
125 A series of statements which returns some value to a caller. It can also
126 be passed zero or more arguments which may be used in the execution of
127 the body. See also :term:`argument` and :term:`method`.
128
Guido van Rossumf10aa982007-08-17 18:30:38 +0000129 __future__
130 A pseudo module which programmers can use to enable new language features
131 which are not compatible with the current interpreter. For example, the
132 expression ``11/4`` currently evaluates to ``2``. If the module in which
133 it is executed had enabled *true division* by executing::
134
135 from __future__ import division
136
137 the expression ``11/4`` would evaluate to ``2.75``. By importing the
138 :mod:`__future__` module and evaluating its variables, you can see when a
139 new feature was first added to the language and when it will become the
140 default::
141
142 >>> import __future__
143 >>> __future__.division
144 _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
145
146 garbage collection
147 The process of freeing memory when it is not used anymore. Python
148 performs garbage collection via reference counting and a cyclic garbage
149 collector that is able to detect and break reference cycles.
150
151 generator
152 A function that returns an iterator. It looks like a normal function
153 except that values are returned to the caller using a :keyword:`yield`
154 statement instead of a :keyword:`return` statement. Generator functions
155 often contain one or more :keyword:`for` or :keyword:`while` loops that
156 :keyword:`yield` elements back to the caller. The function execution is
157 stopped at the :keyword:`yield` keyword (returning the result) and is
158 resumed there when the next element is requested by calling the
159 :meth:`next` method of the returned iterator.
160
161 .. index:: single: generator expression
162
163 generator expression
164 An expression that returns a generator. It looks like a normal expression
165 followed by a :keyword:`for` expression defining a loop variable, range,
166 and an optional :keyword:`if` expression. The combined expression
167 generates values for an enclosing function::
168
169 >>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81
170 285
171
172 GIL
173 See :term:`global interpreter lock`.
174
175 global interpreter lock
176 The lock used by Python threads to assure that only one thread can be run
177 at a time. This simplifies Python by assuring that no two processes can
178 access the same memory at the same time. Locking the entire interpreter
179 makes it easier for the interpreter to be multi-threaded, at the expense
180 of some parallelism on multi-processor machines. Efforts have been made
181 in the past to create a "free-threaded" interpreter (one which locks
182 shared data at a much finer granularity), but performance suffered in the
183 common single-processor case.
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000184
185 hashable
186 An object is *hashable* if it has a hash value that never changes during
187 its lifetime (it needs a :meth:`__hash__` method), and can be compared to
188 other objects (it needs an :meth:`__eq__` or :meth:`__cmp__` method).
189 Hashable objects that compare equal must have the same hash value.
190
191 Hashability makes an object usable as a dictionary key and a set member,
192 because these data structures use the hash value internally.
193
194 All of Python's immutable built-in objects are hashable, while all mutable
195 containers (such as lists or dictionaries) are not. Objects that are
196 instances of user-defined classes are hashable by default; they all
197 compare unequal, and their hash value is their :func:`id`.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000198
199 IDLE
200 An Integrated Development Environment for Python. IDLE is a basic editor
201 and interpreter environment that ships with the standard distribution of
202 Python. Good for beginners, it also serves as clear example code for
203 those wanting to implement a moderately sophisticated, multi-platform GUI
204 application.
205
206 immutable
207 An object with fixed value. Immutable objects are numbers, strings or
208 tuples (and more). Such an object cannot be altered. A new object has to
209 be created if a different value has to be stored. They play an important
210 role in places where a constant hash value is needed, for example as a key
211 in a dictionary.
212
213 integer division
214 Mathematical division discarding any remainder. For example, the
215 expression ``11/4`` currently evaluates to ``2`` in contrast to the
Neil Schemenauer16c70752007-09-21 20:19:23 +0000216 ``2.75`` returned by float division. Also called *floor division*. When
217 dividing two integers the outcome will always be another integer (having
218 the floor function applied to it). However, if the operands types are
219 different, one of them will be converted to the other's type. For
220 example, an integer divided by a float will result in a float value,
221 possibly with a decimal fraction. Integer division can be forced by using
222 the ``//`` operator instead of the ``/`` operator. See also
223 :term:`__future__`.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000224
225 interactive
226 Python has an interactive interpreter which means that you can try out
227 things and immediately see their results. Just launch ``python`` with no
228 arguments (possibly by selecting it from your computer's main menu). It is
229 a very powerful way to test out new ideas or inspect modules and packages
230 (remember ``help(x)``).
231
232 interpreted
233 Python is an interpreted language, as opposed to a compiled one. This
234 means that the source files can be run directly without first creating an
235 executable which is then run. Interpreted languages typically have a
236 shorter development/debug cycle than compiled ones, though their programs
237 generally also run more slowly. See also :term:`interactive`.
238
239 iterable
240 A container object capable of returning its members one at a
241 time. Examples of iterables include all sequence types (such as
242 :class:`list`, :class:`str`, and :class:`tuple`) and some non-sequence
243 types like :class:`dict` and :class:`file` and objects of any classes you
244 define with an :meth:`__iter__` or :meth:`__getitem__` method. Iterables
245 can be used in a :keyword:`for` loop and in many other places where a
246 sequence is needed (:func:`zip`, :func:`map`, ...). When an iterable
247 object is passed as an argument to the builtin function :func:`iter`, it
248 returns an iterator for the object. This iterator is good for one pass
249 over the set of values. When using iterables, it is usually not necessary
250 to call :func:`iter` or deal with iterator objects yourself. The ``for``
251 statement does that automatically for you, creating a temporary unnamed
252 variable to hold the iterator for the duration of the loop. See also
253 :term:`iterator`, :term:`sequence`, and :term:`generator`.
254
255 iterator
256 An object representing a stream of data. Repeated calls to the iterator's
257 :meth:`next` method return successive items in the stream. When no more
258 data is available a :exc:`StopIteration` exception is raised instead. At
259 this point, the iterator object is exhausted and any further calls to its
260 :meth:`next` method just raise :exc:`StopIteration` again. Iterators are
261 required to have an :meth:`__iter__` method that returns the iterator
262 object itself so every iterator is also iterable and may be used in most
263 places where other iterables are accepted. One notable exception is code
264 that attempts multiple iteration passes. A container object (such as a
265 :class:`list`) produces a fresh new iterator each time you pass it to the
266 :func:`iter` function or use it in a :keyword:`for` loop. Attempting this
267 with an iterator will just return the same exhausted iterator object used
268 in the previous iteration pass, making it appear like an empty container.
269
Georg Brandl9afde1c2007-11-01 20:32:30 +0000270 More information can be found in :ref:`typeiter`.
271
Christian Heimesd8654cf2007-12-02 15:22:16 +0000272 keyword argument
273 Arguments which are preceded with a ``variable_name=`` in the call.
274 The variable name designates the local name in the function to which the
275 value is assigned. ``**`` is used to accept or pass a dictionary of
276 keyword arguments. See :term:`argument`.
277
278 lambda
279 An anonymous inline function consisting of a single :term:`expression`
280 which is evaluated when the function is called. The syntax to create
281 a lambda function is ``lambda [arguments]: expression``
282
Guido van Rossumf10aa982007-08-17 18:30:38 +0000283 LBYL
284 Look before you leap. This coding style explicitly tests for
285 pre-conditions before making calls or lookups. This style contrasts with
286 the :term:`EAFP` approach and is characterized by the presence of many
287 :keyword:`if` statements.
288
289 list comprehension
290 A compact way to process all or a subset of elements in a sequence and
291 return a list with the results. ``result = ["0x%02x" % x for x in
292 range(256) if x % 2 == 0]`` generates a list of strings containing hex
293 numbers (0x..) that are even and in the range from 0 to 255. The
294 :keyword:`if` clause is optional. If omitted, all elements in
295 ``range(256)`` are processed.
296
297 mapping
298 A container object (such as :class:`dict`) that supports arbitrary key
299 lookups using the special method :meth:`__getitem__`.
300
301 metaclass
302 The class of a class. Class definitions create a class name, a class
303 dictionary, and a list of base classes. The metaclass is responsible for
304 taking those three arguments and creating the class. Most object oriented
305 programming languages provide a default implementation. What makes Python
306 special is that it is possible to create custom metaclasses. Most users
307 never need this tool, but when the need arises, metaclasses can provide
308 powerful, elegant solutions. They have been used for logging attribute
309 access, adding thread-safety, tracking object creation, implementing
310 singletons, and many other tasks.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000311
312 More information can be found in :ref:`metaclasses`.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000313
314 method
315 A function that is defined inside a class body. If called as an attribute
316 of an instance of that class, the method will get the instance object as
317 its first :term:`argument` (which is usually called ``self``).
318 See :term:`function` and :term:`nested scope`.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000319
320 mutable
321 Mutable objects can change their value but keep their :func:`id`. See
322 also :term:`immutable`.
323
324 namespace
325 The place where a variable is stored. Namespaces are implemented as
326 dictionaries. There are the local, global and builtin namespaces as well
327 as nested namespaces in objects (in methods). Namespaces support
328 modularity by preventing naming conflicts. For instance, the functions
Georg Brandl1a3284e2007-12-02 09:40:06 +0000329 :func:`builtins.open` and :func:`os.open` are distinguished by their
Guido van Rossumf10aa982007-08-17 18:30:38 +0000330 namespaces. Namespaces also aid readability and maintainability by making
331 it clear which module implements a function. For instance, writing
332 :func:`random.seed` or :func:`itertools.izip` makes it clear that those
333 functions are implemented by the :mod:`random` and :mod:`itertools`
334 modules respectively.
335
336 nested scope
337 The ability to refer to a variable in an enclosing definition. For
338 instance, a function defined inside another function can refer to
339 variables in the outer function. Note that nested scopes work only for
340 reference and not for assignment which will always write to the innermost
341 scope. In contrast, local variables both read and write in the innermost
342 scope. Likewise, global variables read and write to the global namespace.
343
344 new-style class
Georg Brandl85eb8c12007-08-31 16:33:38 +0000345 Old name for the flavor of classes now used for all class objects. In
346 earlier Python versions, only new-style classes could use Python's newer,
347 versatile features like :attr:`__slots__`, descriptors, properties,
348 :meth:`__getattribute__`, class methods, and static methods.
Georg Brandl9afde1c2007-11-01 20:32:30 +0000349
350 More information can be found in :ref:`newstyle`.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000351
Christian Heimesd8654cf2007-12-02 15:22:16 +0000352 positional argument
353 The arguments assigned to local names inside a function or method,
354 determined by the order in which they were given in the call. ``*`` is
355 used to either accept multiple positional arguments (when in the
356 definition), or pass several arguments as a list to a function. See
357 :term:`argument`.
358
Guido van Rossumf10aa982007-08-17 18:30:38 +0000359 Python 3000
360 Nickname for the next major Python version, 3.0 (coined long ago when the
361 release of version 3 was something in the distant future.)
362
Christian Heimesd8654cf2007-12-02 15:22:16 +0000363 Pythonic
364 An idea or piece of code which closely follows the most common idioms of
365 the Python language, rather than implementing code using concepts common
366 in other languages. For example, a common idiom in Python is the :keyword:`for`
367 loop structure; other languages don't have this easy keyword, so people
368 use a numerical counter instead::
369
370 for i in range(len(food)):
371 print food[i]
372
373 As opposed to the cleaner, Pythonic method::
374
375 for piece in food:
376 print piece
377
Guido van Rossumf10aa982007-08-17 18:30:38 +0000378 reference count
379 The number of places where a certain object is referenced to. When the
380 reference count drops to zero, an object is deallocated. While reference
381 counting is invisible on the Python code level, it is used on the
382 implementation level to keep track of allocated memory.
383
384 __slots__
Georg Brandl85eb8c12007-08-31 16:33:38 +0000385 A declaration inside a class that saves memory by pre-declaring space for
386 instance attributes and eliminating instance dictionaries. Though
387 popular, the technique is somewhat tricky to get right and is best
388 reserved for rare cases where there are large numbers of instances in a
389 memory-critical application.
Guido van Rossumf10aa982007-08-17 18:30:38 +0000390
391 sequence
392 An :term:`iterable` which supports efficient element access using integer
393 indices via the :meth:`__getitem__` and :meth:`__len__` special methods.
394 Some built-in sequence types are :class:`list`, :class:`str`,
395 :class:`tuple`, and :class:`unicode`. Note that :class:`dict` also
396 supports :meth:`__getitem__` and :meth:`__len__`, but is considered a
397 mapping rather than a sequence because the lookups use arbitrary
398 :term:`immutable` keys rather than integers.
399
Christian Heimesd8654cf2007-12-02 15:22:16 +0000400 slice
401 A list containing a portion of an indexed list-like object. A slice is
402 created using the subscript notation, ``[]`` with colons between numbers
403 when several are given, such as in ``variable_name[1:3:5]``. The bracket
404 (subscript) notation uses :class:`slice` objects internally (or in older
405 versions, :meth:`__getslice__` and :meth:`__setslice__`).
406
407 statement
408 A statement is part of a suite (a "block" of code). A statement is either
409 an :term:`expression` or a one of several constructs with a keyword, such
410 as :keyword:`if`, :keyword:`while` or :keyword:`print`.
411
Guido van Rossumf10aa982007-08-17 18:30:38 +0000412 type
413 The type of a Python object determines what kind of object it is; every
414 object has a type. An object's type is accessible as its
415 :attr:`__class__` attribute or can be retrieved with ``type(obj)``.
416
417 Zen of Python
418 Listing of Python design principles and philosophies that are helpful in
419 understanding and using the language. The listing can be found by typing
420 "``import this``" at the interactive prompt.