blob: bdb5556033251f177c7234f2ff36685faf153e35 [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002
Guido van Rossum02455691997-07-17 16:21:52 +00003% Things to do:
4% Add a section on file I/O
5% Write a chapter entitled ``Some Useful Modules''
Fred Drake20082d92000-04-03 04:26:58 +00006% --re, math+cmath
Guido van Rossum02455691997-07-17 16:21:52 +00007% Should really move the Python startup file info to an appendix
Guido van Rossum02455691997-07-17 16:21:52 +00008
Guido van Rossumdccc2981997-12-30 04:40:25 +00009\title{Python Tutorial}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000010
Guido van Rossum16cd7f91994-10-06 10:29:26 +000011\input{boilerplate}
Guido van Rossum83eb9621993-11-23 16:28:45 +000012
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000013\begin{document}
14
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000015\maketitle
16
Fred Drake9f86b661998-07-28 21:55:19 +000017\ifhtml
18\chapter*{Front Matter\label{front}}
19\fi
20
Guido van Rossum16cd7f91994-10-06 10:29:26 +000021\input{copyright}
22
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000023\begin{abstract}
24
25\noindent
Guido van Rossumdccc2981997-12-30 04:40:25 +000026Python is an easy to learn, powerful programming language. It has
27efficient high-level data structures and a simple but effective
28approach to object-oriented programming. Python's elegant syntax and
29dynamic typing, together with its interpreted nature, make it an ideal
30language for scripting and rapid application development in many areas
31on most platforms.
32
33The Python interpreter and the extensive standard library are freely
34available in source or binary form for all major platforms from the
Fred Drakeca6567f1998-01-22 20:44:18 +000035Python web site, \url{http://www.python.org}, and can be freely
Guido van Rossumdccc2981997-12-30 04:40:25 +000036distributed. The same site also contains distributions of and
37pointers to many free third party Python modules, programs and tools,
38and additional documentation.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000039
Guido van Rossum4410c751991-06-04 20:22:18 +000040The Python interpreter is easily extended with new functions and data
Fred Drakeee84d591999-03-10 17:25:30 +000041types implemented in C or \Cpp{} (or other languages callable from C).
Guido van Rossumdccc2981997-12-30 04:40:25 +000042Python is also suitable as an extension language for customizable
43applications.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000044
Guido van Rossum6fc178f1991-08-16 09:13:42 +000045This tutorial introduces the reader informally to the basic concepts
46and features of the Python language and system. It helps to have a
Guido van Rossumdccc2981997-12-30 04:40:25 +000047Python interpreter handy for hands-on experience, but all examples are
48self-contained, so the tutorial can be read off-line as well.
Guido van Rossum2292b8e1991-01-23 16:31:24 +000049
Guido van Rossumdccc2981997-12-30 04:40:25 +000050For a description of standard objects and modules, see the
Fred Drake37f15741999-11-10 16:21:37 +000051\citetitle[../lib/lib.html]{Python Library Reference} document. The
52\citetitle[../ref/ref.html]{Python Reference Manual} gives a more
53formal definition of the language. To write extensions in C or
54\Cpp{}, read \citetitle[../ext/ext.html]{Extending and Embedding the
55Python Interpreter} and \citetitle[../api/api.html]{Python/C API
56Reference}. There are also several books covering Python in depth.
Guido van Rossumdccc2981997-12-30 04:40:25 +000057
58This tutorial does not attempt to be comprehensive and cover every
59single feature, or even every commonly used feature. Instead, it
60introduces many of Python's most noteworthy features, and will give
61you a good idea of the language's flavor and style. After reading it,
62you will be able to read and write Python modules and programs, and
63you will be ready to learn more about the various Python library
Fred Drake37f15741999-11-10 16:21:37 +000064modules described in the \citetitle[../lib/lib.html]{Python Library
65Reference}.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000066
67\end{abstract}
68
Fred Drake4d4f9e71998-01-13 22:25:02 +000069\tableofcontents
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000070
Guido van Rossum5e0759d1992-08-07 16:06:24 +000071
Fred Drakeb7833d31998-09-11 16:21:55 +000072\chapter{Whetting Your Appetite \label{intro}}
Guido van Rossum3a26dd81996-10-24 22:12:48 +000073
Guido van Rossum6fc178f1991-08-16 09:13:42 +000074If you ever wrote a large shell script, you probably know this
75feeling: you'd love to add yet another feature, but it's already so
76slow, and so big, and so complicated; or the feature involves a system
Fred Drakeee84d591999-03-10 17:25:30 +000077call or other function that is only accessible from C \ldots Usually
Guido van Rossum6fc178f1991-08-16 09:13:42 +000078the problem at hand isn't serious enough to warrant rewriting the
Fred Drakeee84d591999-03-10 17:25:30 +000079script in C; perhaps the problem requires variable-length strings or
Guido van Rossum02455691997-07-17 16:21:52 +000080other data types (like sorted lists of file names) that are easy in
Fred Drakeee84d591999-03-10 17:25:30 +000081the shell but lots of work to implement in C, or perhaps you're not
82sufficiently familiar with C.
Guido van Rossum02455691997-07-17 16:21:52 +000083
Fred Drakeee84d591999-03-10 17:25:30 +000084Another situation: perhaps you have to work with several C libraries,
85and the usual C write/compile/test/re-compile cycle is too slow. You
Guido van Rossum02455691997-07-17 16:21:52 +000086need to develop software more quickly. Possibly perhaps you've
87written a program that could use an extension language, and you don't
88want to design a language, write and debug an interpreter for it, then
89tie it into your application.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000090
Guido van Rossum6fc178f1991-08-16 09:13:42 +000091In such cases, Python may be just the language for you. Python is
92simple to use, but it is a real programming language, offering much
93more structure and support for large programs than the shell has. On
Fred Drakeee84d591999-03-10 17:25:30 +000094the other hand, it also offers much more error checking than C, and,
Fred Drakeeee08cd1997-12-04 15:43:15 +000095being a \emph{very-high-level language}, it has high-level data types
Guido van Rossum6fc178f1991-08-16 09:13:42 +000096built in, such as flexible arrays and dictionaries that would cost you
Fred Drakeee84d591999-03-10 17:25:30 +000097days to implement efficiently in C. Because of its more general data
Fred Drakeeee08cd1997-12-04 15:43:15 +000098types Python is applicable to a much larger problem domain than
99\emph{Awk} or even \emph{Perl}, yet many things are at least as easy
100in Python as in those languages.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000101
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000102Python allows you to split up your program in modules that can be
103reused in other Python programs. It comes with a large collection of
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000104standard modules that you can use as the basis of your programs --- or
105as examples to start learning to program in Python. There are also
106built-in modules that provide things like file I/O, system calls,
Guido van Rossum02455691997-07-17 16:21:52 +0000107sockets, and even interfaces to GUI toolkits like Tk.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000108
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000109Python is an interpreted language, which can save you considerable time
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000110during program development because no compilation and linking is
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000111necessary. The interpreter can be used interactively, which makes it
112easy to experiment with features of the language, to write throw-away
113programs, or to test functions during bottom-up program development.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000114It is also a handy desk calculator.
115
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000116Python allows writing very compact and readable programs. Programs
Fred Drake20082d92000-04-03 04:26:58 +0000117written in Python are typically much shorter than equivalent C or
118\Cpp{} programs, for several reasons:
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000119\begin{itemize}
120\item
121the high-level data types allow you to express complex operations in a
122single statement;
123\item
124statement grouping is done by indentation instead of begin/end
125brackets;
126\item
127no variable or argument declarations are necessary.
128\end{itemize}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000129
Fred Drakeee84d591999-03-10 17:25:30 +0000130Python is \emph{extensible}: if you know how to program in C it is easy
Guido van Rossum02455691997-07-17 16:21:52 +0000131to add a new built-in function or module to the interpreter, either to
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000132perform critical operations at maximum speed, or to link Python
133programs to libraries that may only be available in binary form (such
134as a vendor-specific graphics library). Once you are really hooked,
Fred Drakeee84d591999-03-10 17:25:30 +0000135you can link the Python interpreter into an application written in C
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000136and use it as an extension or command language for that application.
137
Guido van Rossum02455691997-07-17 16:21:52 +0000138By the way, the language is named after the BBC show ``Monty Python's
139Flying Circus'' and has nothing to do with nasty reptiles. Making
140references to Monty Python skits in documentation is not only allowed,
Guido van Rossumdccc2981997-12-30 04:40:25 +0000141it is encouraged!
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000142
Fred Drakeb7833d31998-09-11 16:21:55 +0000143\section{Where From Here \label{where}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000144
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000145Now that you are all excited about Python, you'll want to examine it
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000146in some more detail. Since the best way to learn a language is
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000147using it, you are invited here to do so.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000148
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000149In the next chapter, the mechanics of using the interpreter are
150explained. This is rather mundane information, but essential for
151trying out the examples shown later.
152
Guido van Rossum4410c751991-06-04 20:22:18 +0000153The rest of the tutorial introduces various features of the Python
Fred Drakef64f8a01999-06-10 15:30:21 +0000154language and system through examples, beginning with simple
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000155expressions, statements and data types, through functions and modules,
Guido van Rossum6938f061994-08-01 12:22:53 +0000156and finally touching upon advanced concepts like exceptions
157and user-defined classes.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000158
Fred Drakeb7833d31998-09-11 16:21:55 +0000159\chapter{Using the Python Interpreter \label{using}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000160
Fred Drakeb7833d31998-09-11 16:21:55 +0000161\section{Invoking the Interpreter \label{invoking}}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000162
Fred Drake20082d92000-04-03 04:26:58 +0000163The Python interpreter is usually installed as
164\file{/usr/local/bin/python} on those machines where it is available;
165putting \file{/usr/local/bin} in your \UNIX{} shell's search path
166makes it possible to start it by typing the command
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000167
Fred Drake8842e861998-02-13 07:16:30 +0000168\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000169python
Fred Drake8842e861998-02-13 07:16:30 +0000170\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000171
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000172to the shell. Since the choice of the directory where the interpreter
173lives is an installation option, other places are possible; check with
Fred Drakeeee08cd1997-12-04 15:43:15 +0000174your local Python guru or system administrator. (E.g.,
175\file{/usr/local/python} is a popular alternative location.)
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000176
Guido van Rossuma8a1b9b1998-06-22 14:28:39 +0000177Typing an EOF character (Control-D on \UNIX{}, Control-Z on DOS
Guido van Rossum02455691997-07-17 16:21:52 +0000178or Windows) at the primary prompt causes the interpreter to exit with
179a zero exit status. If that doesn't work, you can exit the
Fred Drake8842e861998-02-13 07:16:30 +0000180interpreter by typing the following commands: \samp{import sys;
Guido van Rossum02455691997-07-17 16:21:52 +0000181sys.exit()}.
182
183The interpreter's line-editing features usually aren't very
Fred Drake3f205921998-01-13 18:56:38 +0000184sophisticated. On \UNIX{}, whoever installed the interpreter may have
Guido van Rossum02455691997-07-17 16:21:52 +0000185enabled support for the GNU readline library, which adds more
186elaborate interactive editing and history features. Perhaps the
187quickest check to see whether command line editing is supported is
188typing Control-P to the first Python prompt you get. If it beeps, you
189have command line editing; see Appendix A for an introduction to the
Fred Drakeeee08cd1997-12-04 15:43:15 +0000190keys. If nothing appears to happen, or if \code{\^P} is echoed,
Guido van Rossum02455691997-07-17 16:21:52 +0000191command line editing isn't available; you'll only be able to use
192backspace to remove characters from the current line.
193
Fred Drake6dc2aae1996-12-13 21:56:03 +0000194The interpreter operates somewhat like the \UNIX{} shell: when called
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000195with standard input connected to a tty device, it reads and executes
196commands interactively; when called with a file name argument or with
Fred Drakeeee08cd1997-12-04 15:43:15 +0000197a file as standard input, it reads and executes a \emph{script} from
Guido van Rossum02455691997-07-17 16:21:52 +0000198that file.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000199
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000200A third way of starting the interpreter is
Fred Drake37f15741999-11-10 16:21:37 +0000201\samp{\program{python} \programopt{-c} \var{command} [arg] ...}, which
202executes the statement(s) in \var{command}, analogous to the shell's
203\programopt{-c} option. Since Python statements often contain spaces
204or other characters that are special to the shell, it is best to quote
205\var{command} in its entirety with double quotes.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000206
Fred Drakeeee08cd1997-12-04 15:43:15 +0000207Note that there is a difference between \samp{python file} and
208\samp{python <file}. In the latter case, input requests from the
209program, such as calls to \code{input()} and \code{raw_input()}, are
210satisfied from \emph{file}. Since this file has already been read
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000211until the end by the parser before the program starts executing, the
212program will encounter EOF immediately. In the former case (which is
213usually what you want) they are satisfied from whatever file or device
214is connected to standard input of the Python interpreter.
215
Guido van Rossumb2c65561993-05-12 08:53:36 +0000216When a script file is used, it is sometimes useful to be able to run
217the script and enter interactive mode afterwards. This can be done by
Fred Drake37f15741999-11-10 16:21:37 +0000218passing \programopt{-i} before the script. (This does not work if the
219script is read from standard input, for the same reason as explained
220in the previous paragraph.)
Guido van Rossumb2c65561993-05-12 08:53:36 +0000221
Fred Drakeb7833d31998-09-11 16:21:55 +0000222\subsection{Argument Passing \label{argPassing}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000223
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000224When known to the interpreter, the script name and additional
Fred Drakeeee08cd1997-12-04 15:43:15 +0000225arguments thereafter are passed to the script in the variable
226\code{sys.argv}, which is a list of strings. Its length is at least
227one; when no script and no arguments are given, \code{sys.argv[0]} is
228an empty string. When the script name is given as \code{'-'} (meaning
Fred Drake37f15741999-11-10 16:21:37 +0000229standard input), \code{sys.argv[0]} is set to \code{'-'}. When
230\programopt{-c} \var{command} is used, \code{sys.argv[0]} is set to
231\code{'-c'}. Options found after \programopt{-c} \var{command} are
232not consumed by the Python interpreter's option processing but left in
233\code{sys.argv} for the command to handle.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000234
Fred Drakeb7833d31998-09-11 16:21:55 +0000235\subsection{Interactive Mode \label{interactive}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000236
Guido van Rossumdd010801991-06-07 14:31:11 +0000237When commands are read from a tty, the interpreter is said to be in
Fred Drakeeee08cd1997-12-04 15:43:15 +0000238\emph{interactive mode}. In this mode it prompts for the next command
239with the \emph{primary prompt}, usually three greater-than signs
Fred Drake20082d92000-04-03 04:26:58 +0000240(\samp{>>>~}); for continuation lines it prompts with the
241\emph{secondary prompt}, by default three dots (\samp{...~}).
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000242The interpreter prints a welcome message stating its version number
243and a copyright notice before printing the first prompt, e.g.:
244
Fred Drake8842e861998-02-13 07:16:30 +0000245\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000246python
Fred Drakeee84d591999-03-10 17:25:30 +0000247Python 1.5.2b2 (#1, Feb 28 1999, 00:02:06) [GCC 2.8.1] on sunos5
Fred Drakeeee08cd1997-12-04 15:43:15 +0000248Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000249>>>
Fred Drake8842e861998-02-13 07:16:30 +0000250\end{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000251
Fred Drake20082d92000-04-03 04:26:58 +0000252Continuation lines are needed when entering a multi-line construct.
253As an example, take a look at this \keyword{if} statement:
254
255\begin{verbatim}
256>>> the_world_is_flat = 1
257>>> if the_world_is_flat:
258... print "Be careful not to fall off!"
259...
260Be careful not to fall off!
261\end{verbatim}
262
263
Fred Drakeb7833d31998-09-11 16:21:55 +0000264\section{The Interpreter and Its Environment \label{interp}}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000265
Fred Drakeb7833d31998-09-11 16:21:55 +0000266\subsection{Error Handling \label{error}}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000267
268When an error occurs, the interpreter prints an error
269message and a stack trace. In interactive mode, it then returns to
270the primary prompt; when input came from a file, it exits with a
271nonzero exit status after printing
Fred Drakeeee08cd1997-12-04 15:43:15 +0000272the stack trace. (Exceptions handled by an \code{except} clause in a
273\code{try} statement are not errors in this context.) Some errors are
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000274unconditionally fatal and cause an exit with a nonzero exit; this
275applies to internal inconsistencies and some cases of running out of
276memory. All error messages are written to the standard error stream;
277normal output from the executed commands is written to standard
278output.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000279
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000280Typing the interrupt character (usually Control-C or DEL) to the
281primary or secondary prompt cancels the input and returns to the
Fred Drake93aa0f21999-04-05 21:39:17 +0000282primary prompt.\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +0000283 A problem with the GNU Readline package may prevent this.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000284}
Fred Drakeeee08cd1997-12-04 15:43:15 +0000285Typing an interrupt while a command is executing raises the
286\code{KeyboardInterrupt} exception, which may be handled by a
287\code{try} statement.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000288
Fred Drakeb7833d31998-09-11 16:21:55 +0000289\subsection{Executable Python Scripts \label{scripts}}
Guido van Rossum4410c751991-06-04 20:22:18 +0000290
Fred Drake6dc2aae1996-12-13 21:56:03 +0000291On BSD'ish \UNIX{} systems, Python scripts can be made directly
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000292executable, like shell scripts, by putting the line
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000293
Fred Drake8842e861998-02-13 07:16:30 +0000294\begin{verbatim}
Fred Drake9e63faa1997-10-15 14:37:24 +0000295#! /usr/bin/env python
Fred Drake8842e861998-02-13 07:16:30 +0000296\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000297
Fred Drake391564f1998-04-01 23:11:56 +0000298(assuming that the interpreter is on the user's \envvar{PATH}) at the
299beginning of the script and giving the file an executable mode. The
Fred Drakebdadf0f1999-04-29 13:20:25 +0000300\samp{\#!} must be the first two characters of the file. Note that
301the hash, or pound, character, \character{\#}, is used to start a
302comment in Python.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000303
Fred Drakeb7833d31998-09-11 16:21:55 +0000304\subsection{The Interactive Startup File \label{startup}}
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000305
Fred Drake8842e861998-02-13 07:16:30 +0000306% XXX This should probably be dumped in an appendix, since most people
307% don't use Python interactively in non-trivial ways.
Guido van Rossum02455691997-07-17 16:21:52 +0000308
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000309When you use Python interactively, it is frequently handy to have some
310standard commands executed every time the interpreter is started. You
Fred Drakeeee08cd1997-12-04 15:43:15 +0000311can do this by setting an environment variable named
Fred Drake391564f1998-04-01 23:11:56 +0000312\envvar{PYTHONSTARTUP} to the name of a file containing your start-up
Fred Drake20082d92000-04-03 04:26:58 +0000313commands. This is similar to the \file{.profile} feature of the
314\UNIX{} shells.
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000315
316This file is only read in interactive sessions, not when Python reads
Fred Drakeeee08cd1997-12-04 15:43:15 +0000317commands from a script, and not when \file{/dev/tty} is given as the
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000318explicit source of commands (which otherwise behaves like an
319interactive session). It is executed in the same name space where
320interactive commands are executed, so that objects that it defines or
321imports can be used without qualification in the interactive session.
Fred Drakeeee08cd1997-12-04 15:43:15 +0000322You can also change the prompts \code{sys.ps1} and \code{sys.ps2} in
Guido van Rossum7b3c8a11992-09-08 09:20:13 +0000323this file.
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000324
325If you want to read an additional start-up file from the current
Fred Drake72389881998-04-13 01:31:10 +0000326directory, you can program this in the global start-up file,
Fred Drakeee84d591999-03-10 17:25:30 +0000327e.g.\ \samp{execfile('.pythonrc.py')}\indexii{.pythonrc.py}{file}. If
Fred Drake72389881998-04-13 01:31:10 +0000328you want to use the startup file in a script, you must do this
329explicitly in the script:
Fred Drake8842e861998-02-13 07:16:30 +0000330
331\begin{verbatim}
332import os
Fred Drakeee84d591999-03-10 17:25:30 +0000333if os.environ.get('PYTHONSTARTUP') \
334 and os.path.isfile(os.environ['PYTHONSTARTUP']):
Fred Drake72389881998-04-13 01:31:10 +0000335 execfile(os.environ['PYTHONSTARTUP'])
Fred Drake8842e861998-02-13 07:16:30 +0000336\end{verbatim}
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000337
Fred Drake72389881998-04-13 01:31:10 +0000338
Fred Drakeb7833d31998-09-11 16:21:55 +0000339\chapter{An Informal Introduction to Python \label{informal}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000340
341In the following examples, input and output are distinguished by the
Fred Drake20082d92000-04-03 04:26:58 +0000342presence or absence of prompts (\samp{>>>~} and \samp{...~}): to repeat
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000343the example, you must type everything after the prompt, when the
344prompt appears; lines that do not begin with a prompt are output from
Fred Drakebdadf0f1999-04-29 13:20:25 +0000345the interpreter. %
Guido van Rossum02455691997-07-17 16:21:52 +0000346%\footnote{
347% I'd prefer to use different fonts to distinguish input
348% from output, but the amount of LaTeX hacking that would require
349% is currently beyond my ability.
350%}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000351Note that a secondary prompt on a line by itself in an example means
352you must type a blank line; this is used to end a multi-line command.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000353
Fred Drakebdadf0f1999-04-29 13:20:25 +0000354Many of the examples in this manual, even those entered at the
355interactive prompt, include comments. Comments in Python start with
356the hash character, \character{\#}, and extend to the end of the
357physical line. A comment may appear at the start of a line or
358following whitespace or code, but not within a string literal. A hash
359character within a string literal is just a hash character.
360
361Some examples:
362
363\begin{verbatim}
364# this is the first comment
365SPAM = 1 # and this is the second comment
366 # ... and now a third!
367STRING = "# This is not a comment."
368\end{verbatim}
369
370
Fred Drakeb7833d31998-09-11 16:21:55 +0000371\section{Using Python as a Calculator \label{calculator}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000372
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000373Let's try some simple Python commands. Start the interpreter and wait
Fred Drake8842e861998-02-13 07:16:30 +0000374for the primary prompt, \samp{>>> }. (It shouldn't take long.)
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000375
Fred Drakeb7833d31998-09-11 16:21:55 +0000376\subsection{Numbers \label{numbers}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000377
378The interpreter acts as a simple calculator: you can type an
379expression at it and it will write the value. Expression syntax is
Fred Drake20082d92000-04-03 04:26:58 +0000380straightforward: the operators \code{+}, \code{-}, \code{*} and
381\code{/} work just like in most other languages (for example, Pascal
382or C); parentheses can be used for grouping. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000383
Fred Drake8842e861998-02-13 07:16:30 +0000384\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000385>>> 2+2
3864
Guido van Rossum6938f061994-08-01 12:22:53 +0000387>>> # This is a comment
388... 2+2
3894
390>>> 2+2 # and a comment on the same line as code
3914
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000392>>> (50-5*6)/4
3935
Guido van Rossum6938f061994-08-01 12:22:53 +0000394>>> # Integer division returns the floor:
395... 7/3
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003962
Guido van Rossum6938f061994-08-01 12:22:53 +0000397>>> 7/-3
398-3
Fred Drake8842e861998-02-13 07:16:30 +0000399\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000400
Fred Drakeee84d591999-03-10 17:25:30 +0000401Like in C, the equal sign (\character{=}) is used to assign a value to a
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000402variable. The value of an assignment is not written:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000403
Fred Drake8842e861998-02-13 07:16:30 +0000404\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000405>>> width = 20
406>>> height = 5*9
407>>> width * height
408900
Fred Drake8842e861998-02-13 07:16:30 +0000409\end{verbatim}
Fred Drake20082d92000-04-03 04:26:58 +0000410
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000411A value can be assigned to several variables simultaneously:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000412
Fred Drake8842e861998-02-13 07:16:30 +0000413\begin{verbatim}
Guido van Rossum6938f061994-08-01 12:22:53 +0000414>>> x = y = z = 0 # Zero x, y and z
415>>> x
4160
417>>> y
4180
419>>> z
4200
Fred Drake8842e861998-02-13 07:16:30 +0000421\end{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000422%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000423There is full support for floating point; operators with mixed type
424operands convert the integer operand to floating point:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000425
Fred Drake8842e861998-02-13 07:16:30 +0000426\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000427>>> 4 * 2.5 / 3.3
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00004283.0303030303
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000429>>> 7.0 / 2
4303.5
Fred Drake8842e861998-02-13 07:16:30 +0000431\end{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000432%
433Complex numbers are also supported; imaginary numbers are written with
Fred Drake8842e861998-02-13 07:16:30 +0000434a suffix of \samp{j} or \samp{J}. Complex numbers with a nonzero
435real component are written as \samp{(\var{real}+\var{imag}j)}, or can
436be created with the \samp{complex(\var{real}, \var{imag})} function.
Guido van Rossum02455691997-07-17 16:21:52 +0000437
Fred Drake8842e861998-02-13 07:16:30 +0000438\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000439>>> 1j * 1J
440(-1+0j)
441>>> 1j * complex(0,1)
442(-1+0j)
443>>> 3+1j*3
444(3+3j)
445>>> (3+1j)*3
446(9+3j)
447>>> (1+2j)/(1+1j)
448(1.5+0.5j)
Fred Drake8842e861998-02-13 07:16:30 +0000449\end{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000450%
451Complex numbers are always represented as two floating point numbers,
452the real and imaginary part. To extract these parts from a complex
Fred Drake8842e861998-02-13 07:16:30 +0000453number \var{z}, use \code{\var{z}.real} and \code{\var{z}.imag}.
Guido van Rossum02455691997-07-17 16:21:52 +0000454
Fred Drake8842e861998-02-13 07:16:30 +0000455\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000456>>> a=1.5+0.5j
457>>> a.real
4581.5
459>>> a.imag
4600.5
Fred Drake8842e861998-02-13 07:16:30 +0000461\end{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000462%
463The conversion functions to floating point and integer
Fred Drake8842e861998-02-13 07:16:30 +0000464(\function{float()}, \function{int()} and \function{long()}) don't
465work for complex numbers --- there is no one correct way to convert a
466complex number to a real number. Use \code{abs(\var{z})} to get its
467magnitude (as a float) or \code{z.real} to get its real part.
Guido van Rossum02455691997-07-17 16:21:52 +0000468
Fred Drake8842e861998-02-13 07:16:30 +0000469\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000470>>> a=1.5+0.5j
471>>> float(a)
472Traceback (innermost last):
473 File "<stdin>", line 1, in ?
474TypeError: can't convert complex to float; use e.g. abs(z)
475>>> a.real
4761.5
477>>> abs(a)
4781.58113883008
Fred Drake8842e861998-02-13 07:16:30 +0000479\end{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000480%
481In interactive mode, the last printed expression is assigned to the
482variable \code{_}. This means that when you are using Python as a
483desk calculator, it is somewhat easier to continue calculations, for
484example:
485
486\begin{verbatim}
487>>> tax = 17.5 / 100
488>>> price = 3.50
489>>> price * tax
4900.6125
491>>> price + _
4924.1125
493>>> round(_, 2)
4944.11
495\end{verbatim}
496
497This variable should be treated as read-only by the user. Don't
498explicitly assign a value to it --- you would create an independent
499local variable with the same name masking the built-in variable with
500its magic behavior.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000501
Fred Drakeb7833d31998-09-11 16:21:55 +0000502\subsection{Strings \label{strings}}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000503
Guido van Rossum02455691997-07-17 16:21:52 +0000504Besides numbers, Python can also manipulate strings, which can be
505expressed in several ways. They can be enclosed in single quotes or
506double quotes:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000507
Fred Drake8842e861998-02-13 07:16:30 +0000508\begin{verbatim}
Guido van Rossume5f8b601995-01-04 19:12:49 +0000509>>> 'spam eggs'
510'spam eggs'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000511>>> 'doesn\'t'
Guido van Rossum6938f061994-08-01 12:22:53 +0000512"doesn't"
513>>> "doesn't"
514"doesn't"
515>>> '"Yes," he said.'
516'"Yes," he said.'
517>>> "\"Yes,\" he said."
518'"Yes," he said.'
519>>> '"Isn\'t," she said.'
520'"Isn\'t," she said.'
Fred Drake8842e861998-02-13 07:16:30 +0000521\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000522
Fred Drake8842e861998-02-13 07:16:30 +0000523String literals can span multiple lines in several ways. Newlines can
524be escaped with backslashes, e.g.:
Guido van Rossum02455691997-07-17 16:21:52 +0000525
526\begin{verbatim}
527hello = "This is a rather long string containing\n\
528several lines of text just as you would do in C.\n\
529 Note that whitespace at the beginning of the line is\
530 significant.\n"
531print hello
532\end{verbatim}
533
534which would print the following:
Fred Drake8842e861998-02-13 07:16:30 +0000535
Guido van Rossum02455691997-07-17 16:21:52 +0000536\begin{verbatim}
537This is a rather long string containing
538several lines of text just as you would do in C.
539 Note that whitespace at the beginning of the line is significant.
540\end{verbatim}
541
542Or, strings can be surrounded in a pair of matching triple-quotes:
543\code{"""} or \code {'''}. End of lines do not need to be escaped
544when using triple-quotes, but they will be included in the string.
545
546\begin{verbatim}
547print """
548Usage: thingy [OPTIONS]
549 -h Display this usage message
550 -H hostname Hostname to connect to
551"""
552\end{verbatim}
553
554produces the following output:
555
Fred Drake8842e861998-02-13 07:16:30 +0000556\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +0000557Usage: thingy [OPTIONS]
558 -h Display this usage message
559 -H hostname Hostname to connect to
Fred Drake8842e861998-02-13 07:16:30 +0000560\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000561
Guido van Rossum02455691997-07-17 16:21:52 +0000562The interpreter prints the result of string operations in the same way
563as they are typed for input: inside quotes, and with quotes and other
564funny characters escaped by backslashes, to show the precise
565value. The string is enclosed in double quotes if the string contains
566a single quote and no double quotes, else it's enclosed in single
Fred Drake8842e861998-02-13 07:16:30 +0000567quotes. (The \keyword{print} statement, described later, can be used
568to write strings without quotes or escapes.)
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000569
Fred Drake20082d92000-04-03 04:26:58 +0000570Strings can be concatenated (glued together) with the
571\code{+} operator, and repeated with \code{*}:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000572
Fred Drake8842e861998-02-13 07:16:30 +0000573\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000574>>> word = 'Help' + 'A'
575>>> word
576'HelpA'
577>>> '<' + word*5 + '>'
578'<HelpAHelpAHelpAHelpAHelpA>'
Fred Drake8842e861998-02-13 07:16:30 +0000579\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000580
Guido van Rossum02455691997-07-17 16:21:52 +0000581Two string literals next to each other are automatically concatenated;
Fred Drake8842e861998-02-13 07:16:30 +0000582the first line above could also have been written \samp{word = 'Help'
Guido van Rossume51aa5b1999-01-06 23:14:14 +0000583'A'}; this only works with two literals, not with arbitrary string
584expressions:
585
586\begin{verbatim}
Fred Drake0ba58151999-09-14 18:00:49 +0000587>>> import string
Guido van Rossume51aa5b1999-01-06 23:14:14 +0000588>>> 'str' 'ing' # <- This is ok
589'string'
590>>> string.strip('str') + 'ing' # <- This is ok
591'string'
592>>> string.strip('str') 'ing' # <- This is invalid
593 File "<stdin>", line 1
594 string.strip('str') 'ing'
595 ^
596SyntaxError: invalid syntax
597\end{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000598
Fred Drakeee84d591999-03-10 17:25:30 +0000599Strings can be subscripted (indexed); like in C, the first character
Guido van Rossum02455691997-07-17 16:21:52 +0000600of a string has subscript (index) 0. There is no separate character
601type; a character is simply a string of size one. Like in Icon,
Fred Drake8842e861998-02-13 07:16:30 +0000602substrings can be specified with the \emph{slice notation}: two indices
Guido van Rossum02455691997-07-17 16:21:52 +0000603separated by a colon.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000604
Fred Drake8842e861998-02-13 07:16:30 +0000605\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000606>>> word[4]
607'A'
608>>> word[0:2]
609'He'
610>>> word[2:4]
611'lp'
Fred Drake8842e861998-02-13 07:16:30 +0000612\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000613
Fred Drake20082d92000-04-03 04:26:58 +0000614Unlike a C string, Python strings cannot be changed. Assigning to an
615indexed position in the string results in an error:
616
617\begin{verbatim}
618>>> word[0] = 'x'
619Traceback (innermost last):
620 File "<stdin>", line 1, in ?
621TypeError: object doesn't support item assignment
622>>> word[:-1] = 'Splat'
623Traceback (innermost last):
624 File "<stdin>", line 1, in ?
625TypeError: object doesn't support slice assignment
626\end{verbatim}
627
628However, creating a new string with the combined content is easy and
629efficient:
630
631\begin{verbatim}
632>>> 'x' + word[1:]
633'xelpA'
634>>> 'Splat' + word[-1:]
635'SplatA'
636\end{verbatim}
637
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000638Slice indices have useful defaults; an omitted first index defaults to
639zero, an omitted second index defaults to the size of the string being
640sliced.
641
Fred Drake8842e861998-02-13 07:16:30 +0000642\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000643>>> word[:2] # The first two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000644'He'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000645>>> word[2:] # All but the first two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000646'lpA'
Fred Drake8842e861998-02-13 07:16:30 +0000647\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000648
Fred Drake20082d92000-04-03 04:26:58 +0000649Here's a useful invariant of slice operations:
650\code{s[:i] + s[i:]} equals \code{s}.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000651
Fred Drake8842e861998-02-13 07:16:30 +0000652\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000653>>> word[:2] + word[2:]
654'HelpA'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000655>>> word[:3] + word[3:]
656'HelpA'
Fred Drake8842e861998-02-13 07:16:30 +0000657\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000658
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000659Degenerate slice indices are handled gracefully: an index that is too
660large is replaced by the string size, an upper bound smaller than the
661lower bound returns an empty string.
662
Fred Drake8842e861998-02-13 07:16:30 +0000663\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000664>>> word[1:100]
665'elpA'
666>>> word[10:]
667''
668>>> word[2:1]
669''
Fred Drake8842e861998-02-13 07:16:30 +0000670\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000671
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000672Indices may be negative numbers, to start counting from the right.
673For example:
674
Fred Drake8842e861998-02-13 07:16:30 +0000675\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000676>>> word[-1] # The last character
677'A'
678>>> word[-2] # The last-but-one character
679'p'
680>>> word[-2:] # The last two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000681'pA'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000682>>> word[:-2] # All but the last two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000683'Hel'
Fred Drake8842e861998-02-13 07:16:30 +0000684\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000685
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000686But note that -0 is really the same as 0, so it does not count from
687the right!
688
Fred Drake8842e861998-02-13 07:16:30 +0000689\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000690>>> word[-0] # (since -0 equals 0)
691'H'
Fred Drake8842e861998-02-13 07:16:30 +0000692\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000693
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000694Out-of-range negative slice indices are truncated, but don't try this
695for single-element (non-slice) indices:
696
Fred Drake8842e861998-02-13 07:16:30 +0000697\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000698>>> word[-100:]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000699'HelpA'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000700>>> word[-10] # error
Guido van Rossum6938f061994-08-01 12:22:53 +0000701Traceback (innermost last):
702 File "<stdin>", line 1
703IndexError: string index out of range
Fred Drake8842e861998-02-13 07:16:30 +0000704\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000705
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000706The best way to remember how slices work is to think of the indices as
Fred Drakeeee08cd1997-12-04 15:43:15 +0000707pointing \emph{between} characters, with the left edge of the first
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000708character numbered 0. Then the right edge of the last character of a
Fred Drakeeee08cd1997-12-04 15:43:15 +0000709string of \var{n} characters has index \var{n}, for example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000710
Fred Drake8842e861998-02-13 07:16:30 +0000711\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000712 +---+---+---+---+---+
713 | H | e | l | p | A |
714 +---+---+---+---+---+
715 0 1 2 3 4 5
716-5 -4 -3 -2 -1
Fred Drake8842e861998-02-13 07:16:30 +0000717\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000718
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000719The first row of numbers gives the position of the indices 0...5 in
720the string; the second row gives the corresponding negative indices.
Fred Drakeeee08cd1997-12-04 15:43:15 +0000721The slice from \var{i} to \var{j} consists of all characters between
722the edges labeled \var{i} and \var{j}, respectively.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000723
Fred Drake20082d92000-04-03 04:26:58 +0000724For non-negative indices, the length of a slice is the difference of
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000725the indices, if both are within bounds, e.g., the length of
Fred Drakeeee08cd1997-12-04 15:43:15 +0000726\code{word[1:3]} is 2.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000727
Fred Drake8842e861998-02-13 07:16:30 +0000728The built-in function \function{len()} returns the length of a string:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000729
Fred Drake8842e861998-02-13 07:16:30 +0000730\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000731>>> s = 'supercalifragilisticexpialidocious'
732>>> len(s)
73334
Fred Drake8842e861998-02-13 07:16:30 +0000734\end{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000735
Fred Drake9dc30bb2000-04-06 14:17:03 +0000736
737\subsection{Unicode Strings \label{unicodeStrings}}
738\sectionauthor{Marc-Andre Lemburg}{mal@lemburg.com}
739
740Starting with Python 1.6 a new data type for storing text data is
741available to the programmer: the Unicode object. It can be used to
742store and manipulate Unicode data (see \url{http://www.unicode.org})
743and intergrates well with the existing string objects providing
744auto-conversions where necessary.
745
746Unicode has the advantage of providing one ordinal for every character
747in every script used in modern and ancient texts. Previously, there
748were only 256 possible ordinals for script characters and texts were
749typically bound to a code page which mapped the ordinals to script
750characters. This lead to very much confusion especially with respect
751to internalization (usually written as \samp{i18n} --- \character{i} +
75218 characters + \character{n}) of software. Unicode solves these
753problems by defining one code page for all scripts.
754
755Creating Unicode strings in Python is just as simple as creating
756normal strings:
757
758\begin{verbatim}
759>>> u'Hello World !'
760u'Hello World !'
761\end{verbatim}
762
763The small \character{u} in front of the quote indicates that an
764Unicode string is supposed to be created. If you want to include
765special characters in the string, you can do so by using the Python
766\emph{Unicode-Escape} encoding. The following example shows how:
767
768\begin{verbatim}
769>>> u'Hello\\u0020World !'
770u'Hello World !'
771\end{verbatim}
772
773The escape sequence \code{\\u0020} indicates to insert the Unicode
774character with the HEX ordinal 0x0020 (the space character) at the
775given position.
776
777Other characters are interpreted by using their respective ordinal
778value directly as Unicode ordinal. Due to the fact that the lower 256
779Unicode are the same as the standard Latin-1 encoding used in many
780western countries, the process of entering Unicode is greatly
781simplified.
782
783For experts, there is also a raw mode just like for normal
784strings. You have to prepend the string with a small 'r' to have
785Python use the \emph{Raw-Unicode-Escape} encoding. It will only apply
786the above \code{\\uXXXX} conversion if there is an uneven number of
787backslashes in front of the small 'u'.
788
789\begin{verbatim}
790>>> ur'Hello\u0020World !'
791u'Hello World !'
792>>> ur'Hello\\u0020World !'
793u'Hello\\\\u0020World !'
794\end{verbatim}
795
796The raw mode is most useful when you have to enter lots of backslashes
797e.g. in regular expressions.
798
799Apart from these standard encodings, Python provides a whole set of
800other ways of creating Unicod strings on the basis of a known
801encoding.
802
803The builtin \function{unicode()}\bifuncindex{unicode} provides access
804to all registered Unicode codecs (COders and DECoders). Some of the
805more well known encodings which these codecs can convert are
806\emph{Latin-1}, \emph{ASCII}, \emph{UTF-8} and \emph{UTF-16}. The latter two
807are variable length encodings which permit to store Unicode characters
808in 8 or 16 bits. Python uses UTF-8 as default encoding. This becomes
809noticable when printing Unicode strings or writing them to files.
810
811\begin{verbatim}
812>>> u"äöü"
813u'\344\366\374'
814>>> str(u"äöü")
815'\303\244\303\266\303\274'
816\end{verbatim}
817
818If you have data in a specific encoding and want to produce a
819corresponding Unicode string from it, you can use the
820\function{unicode()} builtin with the encoding name as second
821argument.
822
823\begin{verbatim}
824>>> unicode('\303\244\303\266\303\274','UTF-8')
825u'\344\366\374'
826\end{verbatim}
827
828To convert the Unicode string back into a string using the original
829encoding, the objects provide an \method{encode()} method.
830
831\begin{verbatim}
832>>> u"äöü".encode('UTF-8')
833'\303\244\303\266\303\274'
834\end{verbatim}
835
836
Fred Drakeb7833d31998-09-11 16:21:55 +0000837\subsection{Lists \label{lists}}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000838
Fred Drakeeee08cd1997-12-04 15:43:15 +0000839Python knows a number of \emph{compound} data types, used to group
840together other values. The most versatile is the \emph{list}, which
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000841can be written as a list of comma-separated values (items) between
842square brackets. List items need not all have the same type.
843
Fred Drake8842e861998-02-13 07:16:30 +0000844\begin{verbatim}
Guido van Rossume5f8b601995-01-04 19:12:49 +0000845>>> a = ['spam', 'eggs', 100, 1234]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000846>>> a
Guido van Rossume5f8b601995-01-04 19:12:49 +0000847['spam', 'eggs', 100, 1234]
Fred Drake8842e861998-02-13 07:16:30 +0000848\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000849
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000850Like string indices, list indices start at 0, and lists can be sliced,
851concatenated and so on:
852
Fred Drake8842e861998-02-13 07:16:30 +0000853\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000854>>> a[0]
Guido van Rossume5f8b601995-01-04 19:12:49 +0000855'spam'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000856>>> a[3]
8571234
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000858>>> a[-2]
859100
860>>> a[1:-1]
Guido van Rossume5f8b601995-01-04 19:12:49 +0000861['eggs', 100]
862>>> a[:2] + ['bacon', 2*2]
863['spam', 'eggs', 'bacon', 4]
Guido van Rossum4410c751991-06-04 20:22:18 +0000864>>> 3*a[:3] + ['Boe!']
Guido van Rossume5f8b601995-01-04 19:12:49 +0000865['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boe!']
Fred Drake8842e861998-02-13 07:16:30 +0000866\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000867
Fred Drakeeee08cd1997-12-04 15:43:15 +0000868Unlike strings, which are \emph{immutable}, it is possible to change
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000869individual elements of a list:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000870
Fred Drake8842e861998-02-13 07:16:30 +0000871\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000872>>> a
Guido van Rossume5f8b601995-01-04 19:12:49 +0000873['spam', 'eggs', 100, 1234]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000874>>> a[2] = a[2] + 23
875>>> a
Guido van Rossume5f8b601995-01-04 19:12:49 +0000876['spam', 'eggs', 123, 1234]
Fred Drake8842e861998-02-13 07:16:30 +0000877\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000878
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000879Assignment to slices is also possible, and this can even change the size
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000880of the list:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000881
Fred Drake8842e861998-02-13 07:16:30 +0000882\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000883>>> # Replace some items:
Guido van Rossum6938f061994-08-01 12:22:53 +0000884... a[0:2] = [1, 12]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000885>>> a
886[1, 12, 123, 1234]
887>>> # Remove some:
Guido van Rossum6938f061994-08-01 12:22:53 +0000888... a[0:2] = []
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000889>>> a
890[123, 1234]
891>>> # Insert some:
Guido van Rossum6938f061994-08-01 12:22:53 +0000892... a[1:1] = ['bletch', 'xyzzy']
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000893>>> a
894[123, 'bletch', 'xyzzy', 1234]
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000895>>> a[:0] = a # Insert (a copy of) itself at the beginning
896>>> a
897[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
Fred Drake8842e861998-02-13 07:16:30 +0000898\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000899
Fred Drake8842e861998-02-13 07:16:30 +0000900The built-in function \function{len()} also applies to lists:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000901
Fred Drake8842e861998-02-13 07:16:30 +0000902\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000903>>> len(a)
Guido van Rossuma8d754e1992-01-07 16:44:35 +00009048
Fred Drake8842e861998-02-13 07:16:30 +0000905\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000906
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000907It is possible to nest lists (create lists containing other lists),
908for example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000909
Fred Drake8842e861998-02-13 07:16:30 +0000910\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000911>>> q = [2, 3]
912>>> p = [1, q, 4]
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000913>>> len(p)
9143
915>>> p[1]
916[2, 3]
917>>> p[1][0]
9182
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000919>>> p[1].append('xtra') # See section 5.1
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000920>>> p
921[1, [2, 3, 'xtra'], 4]
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000922>>> q
923[2, 3, 'xtra']
Fred Drake8842e861998-02-13 07:16:30 +0000924\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000925
Fred Drakeeee08cd1997-12-04 15:43:15 +0000926Note that in the last example, \code{p[1]} and \code{q} really refer to
927the same object! We'll come back to \emph{object semantics} later.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000928
Fred Drakeb7833d31998-09-11 16:21:55 +0000929\section{First Steps Towards Programming \label{firstSteps}}
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000930
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000931Of course, we can use Python for more complicated tasks than adding
932two and two together. For instance, we can write an initial
Fred Drakeeee08cd1997-12-04 15:43:15 +0000933subsequence of the \emph{Fibonacci} series as follows:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000934
Fred Drake8842e861998-02-13 07:16:30 +0000935\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000936>>> # Fibonacci series:
Guido van Rossum6938f061994-08-01 12:22:53 +0000937... # the sum of two elements defines the next
938... a, b = 0, 1
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000939>>> while b < 10:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000940... print b
941... a, b = b, a+b
942...
9431
9441
9452
9463
9475
9488
Fred Drake8842e861998-02-13 07:16:30 +0000949\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000950
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000951This example introduces several new features.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000952
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000953\begin{itemize}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000954
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000955\item
Fred Drakeeee08cd1997-12-04 15:43:15 +0000956The first line contains a \emph{multiple assignment}: the variables
957\code{a} and \code{b} simultaneously get the new values 0 and 1. On the
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000958last line this is used again, demonstrating that the expressions on
959the right-hand side are all evaluated first before any of the
Fred Drake20082d92000-04-03 04:26:58 +0000960assignments take place. The right-hand side expressions are evaluated
961from the left to the right.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000962
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000963\item
Fred Drake8842e861998-02-13 07:16:30 +0000964The \keyword{while} loop executes as long as the condition (here:
Fred Drakeee84d591999-03-10 17:25:30 +0000965\code{b < 10}) remains true. In Python, like in C, any non-zero
Fred Drake8842e861998-02-13 07:16:30 +0000966integer value is true; zero is false. The condition may also be a
967string or list value, in fact any sequence; anything with a non-zero
968length is true, empty sequences are false. The test used in the
969example is a simple comparison. The standard comparison operators are
Fred Drake20082d92000-04-03 04:26:58 +0000970written the same as in C: \code{<} (less than), \code{>} (greater than),
971\code{==} (equal to), \code{<=} (less than or equal to),
972\code{>=} (greater than or equal to) and \code{!=} (not equal to).
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000973
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000974\item
Fred Drakeeee08cd1997-12-04 15:43:15 +0000975The \emph{body} of the loop is \emph{indented}: indentation is Python's
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000976way of grouping statements. Python does not (yet!) provide an
977intelligent input line editing facility, so you have to type a tab or
978space(s) for each indented line. In practice you will prepare more
979complicated input for Python with a text editor; most text editors have
980an auto-indent facility. When a compound statement is entered
981interactively, it must be followed by a blank line to indicate
982completion (since the parser cannot guess when you have typed the last
Fred Drake20082d92000-04-03 04:26:58 +0000983line). Note that each line within a basic block must be indented by
984the same amount.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000985
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000986\item
Fred Drake8842e861998-02-13 07:16:30 +0000987The \keyword{print} statement writes the value of the expression(s) it is
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000988given. It differs from just writing the expression you want to write
989(as we did earlier in the calculator examples) in the way it handles
Guido van Rossum16cd7f91994-10-06 10:29:26 +0000990multiple expressions and strings. Strings are printed without quotes,
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000991and a space is inserted between items, so you can format things nicely,
992like this:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000993
Fred Drake8842e861998-02-13 07:16:30 +0000994\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000995>>> i = 256*256
996>>> print 'The value of i is', i
997The value of i is 65536
Fred Drake8842e861998-02-13 07:16:30 +0000998\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +0000999
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001000A trailing comma avoids the newline after the output:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001001
Fred Drake8842e861998-02-13 07:16:30 +00001002\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001003>>> a, b = 0, 1
1004>>> while b < 1000:
1005... print b,
1006... a, b = b, a+b
1007...
10081 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
Fred Drake8842e861998-02-13 07:16:30 +00001009\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001010
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001011Note that the interpreter inserts a newline before it prints the next
1012prompt if the last line was not completed.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001013
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001014\end{itemize}
1015
Guido van Rossum5e0759d1992-08-07 16:06:24 +00001016
Fred Drakeb7833d31998-09-11 16:21:55 +00001017\chapter{More Control Flow Tools \label{moreControl}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001018
Fred Drake8842e861998-02-13 07:16:30 +00001019Besides the \keyword{while} statement just introduced, Python knows
1020the usual control flow statements known from other languages, with
1021some twists.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001022
Fred Drakeb7833d31998-09-11 16:21:55 +00001023\section{\keyword{if} Statements \label{if}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001024
Fred Drake20082d92000-04-03 04:26:58 +00001025Perhaps the most well-known statement type is the
1026\keyword{if} statement. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001027
Fred Drake8842e861998-02-13 07:16:30 +00001028\begin{verbatim}
Fred Drake20082d92000-04-03 04:26:58 +00001029>>> x = int(raw_input("Please enter a number: "))
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001030>>> if x < 0:
1031... x = 0
1032... print 'Negative changed to zero'
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001033... elif x == 0:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001034... print 'Zero'
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001035... elif x == 1:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001036... print 'Single'
1037... else:
1038... print 'More'
1039...
Fred Drake8842e861998-02-13 07:16:30 +00001040\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001041
Fred Drake20082d92000-04-03 04:26:58 +00001042There can be zero or more \keyword{elif} parts, and the
1043\keyword{else} part is optional. The keyword `\keyword{elif}' is
1044short for `else if', and is useful to avoid excessive indentation. An
1045\keyword{if} \ldots\ \keyword{elif} \ldots\ \keyword{elif} \ldots\ sequence
Fred Drake8842e861998-02-13 07:16:30 +00001046% Weird spacings happen here if the wrapping of the source text
1047% gets changed in the wrong way.
Fred Drake20082d92000-04-03 04:26:58 +00001048is a substitute for the \emph{switch} or
Fred Drake8842e861998-02-13 07:16:30 +00001049\emph{case} statements found in other languages.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001050
Fred Drakeb7833d31998-09-11 16:21:55 +00001051
1052\section{\keyword{for} Statements \label{for}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001053
Fred Drakef790b161998-11-30 20:37:24 +00001054The \keyword{for}\stindex{for} statement in Python differs a bit from
Fred Drakeee84d591999-03-10 17:25:30 +00001055what you may be used to in C or Pascal. Rather than always
Fred Drakef790b161998-11-30 20:37:24 +00001056iterating over an arithmetic progression of numbers (like in Pascal),
1057or giving the user the ability to define both the iteration step and
Fred Drake20082d92000-04-03 04:26:58 +00001058halting condition (as C), Python's
1059\keyword{for}\stindex{for} statement iterates over the items of any
1060sequence (e.g., a list or a string), in the order that they appear in
1061the sequence. For example (no pun intended):
Fred Drakef790b161998-11-30 20:37:24 +00001062% One suggestion was to give a real C example here, but that may only
1063% serve to confuse non-C programmers.
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001064
Fred Drake8842e861998-02-13 07:16:30 +00001065\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001066>>> # Measure some strings:
Guido van Rossum6938f061994-08-01 12:22:53 +00001067... a = ['cat', 'window', 'defenestrate']
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001068>>> for x in a:
1069... print x, len(x)
1070...
1071cat 3
1072window 6
1073defenestrate 12
Fred Drake8842e861998-02-13 07:16:30 +00001074\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001075
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001076It is not safe to modify the sequence being iterated over in the loop
1077(this can only happen for mutable sequence types, i.e., lists). If
1078you need to modify the list you are iterating over, e.g., duplicate
1079selected items, you must iterate over a copy. The slice notation
1080makes this particularly convenient:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001081
Fred Drake8842e861998-02-13 07:16:30 +00001082\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001083>>> for x in a[:]: # make a slice copy of the entire list
1084... if len(x) > 6: a.insert(0, x)
1085...
1086>>> a
1087['defenestrate', 'cat', 'window', 'defenestrate']
Fred Drake8842e861998-02-13 07:16:30 +00001088\end{verbatim}
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001089
Fred Drakeb7833d31998-09-11 16:21:55 +00001090
1091\section{The \function{range()} Function \label{range}}
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001092
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001093If you do need to iterate over a sequence of numbers, the built-in
Fred Drake8842e861998-02-13 07:16:30 +00001094function \function{range()} comes in handy. It generates lists
1095containing arithmetic progressions, e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001096
Fred Drake8842e861998-02-13 07:16:30 +00001097\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001098>>> range(10)
1099[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Fred Drake8842e861998-02-13 07:16:30 +00001100\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001101
Fred Drake8842e861998-02-13 07:16:30 +00001102The given end point is never part of the generated list;
1103\code{range(10)} generates a list of 10 values, exactly the legal
1104indices for items of a sequence of length 10. It is possible to let
1105the range start at another number, or to specify a different increment
Fred Drake20082d92000-04-03 04:26:58 +00001106(even negative; sometimes this is called the `step'):
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001107
Fred Drake8842e861998-02-13 07:16:30 +00001108\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001109>>> range(5, 10)
1110[5, 6, 7, 8, 9]
1111>>> range(0, 10, 3)
1112[0, 3, 6, 9]
1113>>> range(-10, -100, -30)
1114[-10, -40, -70]
Fred Drake8842e861998-02-13 07:16:30 +00001115\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001116
Fred Drake20082d92000-04-03 04:26:58 +00001117To iterate over the indices of a sequence, combine
1118\function{range()} and \function{len()} as follows:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001119
Fred Drake8842e861998-02-13 07:16:30 +00001120\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001121>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001122>>> for i in range(len(a)):
1123... print i, a[i]
1124...
11250 Mary
11261 had
11272 a
11283 little
Guido van Rossum6fc178f1991-08-16 09:13:42 +000011294 lamb
Fred Drake8842e861998-02-13 07:16:30 +00001130\end{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001131
Fred Drake20082d92000-04-03 04:26:58 +00001132
Fred Drake391564f1998-04-01 23:11:56 +00001133\section{\keyword{break} and \keyword{continue} Statements, and
Fred Drakeb7833d31998-09-11 16:21:55 +00001134 \keyword{else} Clauses on Loops
1135 \label{break}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001136
Fred Drakeee84d591999-03-10 17:25:30 +00001137The \keyword{break} statement, like in C, breaks out of the smallest
Fred Drake8842e861998-02-13 07:16:30 +00001138enclosing \keyword{for} or \keyword{while} loop.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001139
Fred Drakeee84d591999-03-10 17:25:30 +00001140The \keyword{continue} statement, also borrowed from C, continues
Fred Drake8842e861998-02-13 07:16:30 +00001141with the next iteration of the loop.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001142
Fred Drake8842e861998-02-13 07:16:30 +00001143Loop statements may have an \code{else} clause; it is executed when
1144the loop terminates through exhaustion of the list (with
1145\keyword{for}) or when the condition becomes false (with
1146\keyword{while}), but not when the loop is terminated by a
1147\keyword{break} statement. This is exemplified by the following loop,
1148which searches for prime numbers:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001149
Fred Drake8842e861998-02-13 07:16:30 +00001150\begin{verbatim}
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001151>>> for n in range(2, 10):
1152... for x in range(2, n):
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001153... if n % x == 0:
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001154... print n, 'equals', x, '*', n/x
1155... break
1156... else:
1157... print n, 'is a prime number'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001158...
Guido van Rossum2292b8e1991-01-23 16:31:24 +000011592 is a prime number
11603 is a prime number
11614 equals 2 * 2
11625 is a prime number
11636 equals 2 * 3
11647 is a prime number
11658 equals 2 * 4
11669 equals 3 * 3
Fred Drake8842e861998-02-13 07:16:30 +00001167\end{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001168
Fred Drakeb7833d31998-09-11 16:21:55 +00001169\section{\keyword{pass} Statements \label{pass}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001170
Fred Drake8842e861998-02-13 07:16:30 +00001171The \keyword{pass} statement does nothing.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001172It can be used when a statement is required syntactically but the
1173program requires no action.
1174For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001175
Fred Drake8842e861998-02-13 07:16:30 +00001176\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001177>>> while 1:
1178... pass # Busy-wait for keyboard interrupt
1179...
Fred Drake8842e861998-02-13 07:16:30 +00001180\end{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001181
Fred Drakeb7833d31998-09-11 16:21:55 +00001182\section{Defining Functions \label{functions}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001183
1184We can create a function that writes the Fibonacci series to an
1185arbitrary boundary:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001186
Fred Drake8842e861998-02-13 07:16:30 +00001187\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001188>>> def fib(n): # write Fibonacci series up to n
Guido van Rossum02455691997-07-17 16:21:52 +00001189... "Print a Fibonacci series up to n"
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001190... a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00001191... while b < n:
Fred Drakeeee08cd1997-12-04 15:43:15 +00001192... print b,
1193... a, b = b, a+b
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001194...
1195>>> # Now call the function we just defined:
Guido van Rossum6938f061994-08-01 12:22:53 +00001196... fib(2000)
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000011971 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
Fred Drake8842e861998-02-13 07:16:30 +00001198\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001199
Fred Drake8842e861998-02-13 07:16:30 +00001200The keyword \keyword{def} introduces a function \emph{definition}. It
1201must be followed by the function name and the parenthesized list of
1202formal parameters. The statements that form the body of the function
Fred Drake20082d92000-04-03 04:26:58 +00001203start at the next line, and must be indented. The first statement of
1204the function body can optionally be a string literal; this string
1205literal is the function's \index{documentation strings}documentation
1206string, or \dfn{docstring}.\index{docstrings}\index{strings, documentation}
1207
1208There are tools which use docstrings to automatically produce online
1209or printed documentation, or to let the user interactively browse
1210through code; it's good practice to include docstrings in code that
1211you write, so try to make a habit of it.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001212
Fred Drakeeee08cd1997-12-04 15:43:15 +00001213The \emph{execution} of a function introduces a new symbol table used
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001214for the local variables of the function. More precisely, all variable
1215assignments in a function store the value in the local symbol table;
Guido van Rossum02455691997-07-17 16:21:52 +00001216whereas variable references first look in the local symbol table, then
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001217in the global symbol table, and then in the table of built-in names.
Fred Drake8842e861998-02-13 07:16:30 +00001218Thus, global variables cannot be directly assigned a value within a
1219function (unless named in a \keyword{global} statement), although
Guido van Rossum6938f061994-08-01 12:22:53 +00001220they may be referenced.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001221
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001222The actual parameters (arguments) to a function call are introduced in
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001223the local symbol table of the called function when it is called; thus,
Fred Drake20082d92000-04-03 04:26:58 +00001224arguments are passed using \emph{call by value} (where the
1225\emph{value} is always an object \emph{reference}, not the value of
1226the object).\footnote{
Fred Drakeeee08cd1997-12-04 15:43:15 +00001227 Actually, \emph{call by object reference} would be a better
Guido van Rossum6938f061994-08-01 12:22:53 +00001228 description, since if a mutable object is passed, the caller
1229 will see any changes the callee makes to it (e.g., items
1230 inserted into a list).
Fred Drake20082d92000-04-03 04:26:58 +00001231} When a function calls another function, a new local symbol table is
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001232created for that call.
1233
Fred Drake8842e861998-02-13 07:16:30 +00001234A function definition introduces the function name in the current
1235symbol table. The value of the function name
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001236has a type that is recognized by the interpreter as a user-defined
1237function. This value can be assigned to another name which can then
1238also be used as a function. This serves as a general renaming
1239mechanism:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001240
Fred Drake8842e861998-02-13 07:16:30 +00001241\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001242>>> fib
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001243<function object at 10042ed0>
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001244>>> f = fib
1245>>> f(100)
12461 1 2 3 5 8 13 21 34 55 89
Fred Drake8842e861998-02-13 07:16:30 +00001247\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001248
Fred Drakeeee08cd1997-12-04 15:43:15 +00001249You might object that \code{fib} is not a function but a procedure. In
Fred Drakeee84d591999-03-10 17:25:30 +00001250Python, like in C, procedures are just functions that don't return a
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001251value. In fact, technically speaking, procedures do return a value,
Fred Drakeeee08cd1997-12-04 15:43:15 +00001252albeit a rather boring one. This value is called \code{None} (it's a
1253built-in name). Writing the value \code{None} is normally suppressed by
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001254the interpreter if it would be the only value written. You can see it
1255if you really want to:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001256
Fred Drake8842e861998-02-13 07:16:30 +00001257\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001258>>> print fib(0)
1259None
Fred Drake8842e861998-02-13 07:16:30 +00001260\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001261
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001262It is simple to write a function that returns a list of the numbers of
1263the Fibonacci series, instead of printing it:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001264
Fred Drake8842e861998-02-13 07:16:30 +00001265\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001266>>> def fib2(n): # return Fibonacci series up to n
Guido van Rossum02455691997-07-17 16:21:52 +00001267... "Return a list containing the Fibonacci series up to n"
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001268... result = []
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001269... a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00001270... while b < n:
Fred Drakeeee08cd1997-12-04 15:43:15 +00001271... result.append(b) # see below
1272... a, b = b, a+b
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001273... return result
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001274...
1275>>> f100 = fib2(100) # call it
1276>>> f100 # write the result
1277[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Fred Drake8842e861998-02-13 07:16:30 +00001278\end{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001279%
Guido van Rossum4410c751991-06-04 20:22:18 +00001280This example, as usual, demonstrates some new Python features:
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001281
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001282\begin{itemize}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001283
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001284\item
Fred Drake8842e861998-02-13 07:16:30 +00001285The \keyword{return} statement returns with a value from a function.
1286\keyword{return} without an expression argument is used to return from
Fred Drakeeee08cd1997-12-04 15:43:15 +00001287the middle of a procedure (falling off the end also returns from a
1288procedure), in which case the \code{None} value is returned.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001289
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001290\item
Fred Drakeeee08cd1997-12-04 15:43:15 +00001291The statement \code{result.append(b)} calls a \emph{method} of the list
1292object \code{result}. A method is a function that `belongs' to an
1293object and is named \code{obj.methodname}, where \code{obj} is some
1294object (this may be an expression), and \code{methodname} is the name
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001295of a method that is defined by the object's type. Different types
1296define different methods. Methods of different types may have the
1297same name without causing ambiguity. (It is possible to define your
Fred Drakeeee08cd1997-12-04 15:43:15 +00001298own object types and methods, using \emph{classes}, as discussed later
Guido van Rossum6938f061994-08-01 12:22:53 +00001299in this tutorial.)
Fred Drake8842e861998-02-13 07:16:30 +00001300The method \method{append()} shown in the example, is defined for
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001301list objects; it adds a new element at the end of the list. In this
Fred Drake8842e861998-02-13 07:16:30 +00001302example it is equivalent to \samp{result = result + [b]}, but more
1303efficient.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001304
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001305\end{itemize}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001306
Fred Drakeb7833d31998-09-11 16:21:55 +00001307\section{More on Defining Functions \label{defining}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00001308
Guido van Rossum02455691997-07-17 16:21:52 +00001309It is also possible to define functions with a variable number of
1310arguments. There are three forms, which can be combined.
1311
Fred Drakeb7833d31998-09-11 16:21:55 +00001312\subsection{Default Argument Values \label{defaultArgs}}
Guido van Rossum02455691997-07-17 16:21:52 +00001313
1314The most useful form is to specify a default value for one or more
1315arguments. This creates a function that can be called with fewer
1316arguments than it is defined, e.g.
1317
1318\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00001319def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
1320 while 1:
1321 ok = raw_input(prompt)
1322 if ok in ('y', 'ye', 'yes'): return 1
1323 if ok in ('n', 'no', 'nop', 'nope'): return 0
1324 retries = retries - 1
1325 if retries < 0: raise IOError, 'refusenik user'
1326 print complaint
Guido van Rossum02455691997-07-17 16:21:52 +00001327\end{verbatim}
1328
1329This function can be called either like this:
Fred Drakeeee08cd1997-12-04 15:43:15 +00001330\code{ask_ok('Do you really want to quit?')} or like this:
1331\code{ask_ok('OK to overwrite the file?', 2)}.
Guido van Rossum02455691997-07-17 16:21:52 +00001332
1333The default values are evaluated at the point of function definition
Fred Drakeeee08cd1997-12-04 15:43:15 +00001334in the \emph{defining} scope, so that e.g.
Guido van Rossum02455691997-07-17 16:21:52 +00001335
1336\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00001337i = 5
1338def f(arg = i): print arg
1339i = 6
1340f()
Guido van Rossum02455691997-07-17 16:21:52 +00001341\end{verbatim}
1342
Fred Drakeeee08cd1997-12-04 15:43:15 +00001343will print \code{5}.
Guido van Rossum02455691997-07-17 16:21:52 +00001344
Guido van Rossumaee5e261998-08-07 17:45:09 +00001345\strong{Important warning:} The default value is evaluated only once.
1346This makes a difference when the default is a mutable object such as a
1347list or dictionary. For example, the following function accumulates
1348the arguments passed to it on subsequent calls:
1349
1350\begin{verbatim}
1351def f(a, l = []):
1352 l.append(a)
Guido van Rossumc62cf361998-10-24 13:15:28 +00001353 return l
Guido van Rossumaee5e261998-08-07 17:45:09 +00001354print f(1)
1355print f(2)
1356print f(3)
1357\end{verbatim}
1358
1359This will print
1360
1361\begin{verbatim}
1362[1]
1363[1, 2]
1364[1, 2, 3]
1365\end{verbatim}
1366
1367If you don't want the default to be shared between subsequent calls,
1368you can write the function like this instead:
1369
1370\begin{verbatim}
1371def f(a, l = None):
1372 if l is None:
1373 l = []
1374 l.append(a)
Guido van Rossumc62cf361998-10-24 13:15:28 +00001375 return l
Guido van Rossumaee5e261998-08-07 17:45:09 +00001376\end{verbatim}
1377
Fred Drakeb7833d31998-09-11 16:21:55 +00001378\subsection{Keyword Arguments \label{keywordArgs}}
Guido van Rossum02455691997-07-17 16:21:52 +00001379
1380Functions can also be called using
Fred Drake8842e861998-02-13 07:16:30 +00001381keyword arguments of the form \samp{\var{keyword} = \var{value}}. For
Guido van Rossum02455691997-07-17 16:21:52 +00001382instance, the following function:
1383
1384\begin{verbatim}
1385def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
1386 print "-- This parrot wouldn't", action,
1387 print "if you put", voltage, "Volts through it."
1388 print "-- Lovely plumage, the", type
1389 print "-- It's", state, "!"
1390\end{verbatim}
1391
1392could be called in any of the following ways:
1393
1394\begin{verbatim}
1395parrot(1000)
1396parrot(action = 'VOOOOOM', voltage = 1000000)
1397parrot('a thousand', state = 'pushing up the daisies')
1398parrot('a million', 'bereft of life', 'jump')
1399\end{verbatim}
1400
1401but the following calls would all be invalid:
1402
1403\begin{verbatim}
1404parrot() # required argument missing
1405parrot(voltage=5.0, 'dead') # non-keyword argument following keyword
1406parrot(110, voltage=220) # duplicate value for argument
1407parrot(actor='John Cleese') # unknown keyword
1408\end{verbatim}
1409
1410In general, an argument list must have any positional arguments
1411followed by any keyword arguments, where the keywords must be chosen
1412from the formal parameter names. It's not important whether a formal
Fred Drakef1ad2071999-06-30 15:32:50 +00001413parameter has a default value or not. No argument may receive a
Guido van Rossum02455691997-07-17 16:21:52 +00001414value more than once --- formal parameter names corresponding to
1415positional arguments cannot be used as keywords in the same calls.
Fred Drakef1ad2071999-06-30 15:32:50 +00001416Here's an example that fails due to this restriction:
1417
1418\begin{verbatim}
1419>>> def function(a):
1420... pass
1421...
1422>>> function(0, a=0)
1423Traceback (innermost last):
1424 File "<stdin>", line 1, in ?
1425TypeError: keyword parameter redefined
1426\end{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00001427
1428When a final formal parameter of the form \code{**\var{name}} is
1429present, it receives a dictionary containing all keyword arguments
1430whose keyword doesn't correspond to a formal parameter. This may be
Fred Drake20082d92000-04-03 04:26:58 +00001431combined with a formal parameter of the form
1432\code{*\var{name}} (described in the next subsection) which receives a
1433tuple containing the positional arguments beyond the formal parameter
1434list. (\code{*\var{name}} must occur before \code{**\var{name}}.)
1435For example, if we define a function like this:
Guido van Rossum02455691997-07-17 16:21:52 +00001436
1437\begin{verbatim}
1438def cheeseshop(kind, *arguments, **keywords):
1439 print "-- Do you have any", kind, '?'
1440 print "-- I'm sorry, we're all out of", kind
1441 for arg in arguments: print arg
1442 print '-'*40
1443 for kw in keywords.keys(): print kw, ':', keywords[kw]
1444\end{verbatim}
1445
1446It could be called like this:
1447
1448\begin{verbatim}
1449cheeseshop('Limburger', "It's very runny, sir.",
1450 "It's really very, VERY runny, sir.",
1451 client='John Cleese',
1452 shopkeeper='Michael Palin',
1453 sketch='Cheese Shop Sketch')
1454\end{verbatim}
1455
1456and of course it would print:
1457
1458\begin{verbatim}
1459-- Do you have any Limburger ?
1460-- I'm sorry, we're all out of Limburger
1461It's very runny, sir.
1462It's really very, VERY runny, sir.
1463----------------------------------------
1464client : John Cleese
1465shopkeeper : Michael Palin
1466sketch : Cheese Shop Sketch
1467\end{verbatim}
1468
Fred Drakeb7833d31998-09-11 16:21:55 +00001469\subsection{Arbitrary Argument Lists \label{arbitraryArgs}}
Guido van Rossum02455691997-07-17 16:21:52 +00001470
1471Finally, the least frequently used option is to specify that a
1472function can be called with an arbitrary number of arguments. These
1473arguments will be wrapped up in a tuple. Before the variable number
1474of arguments, zero or more normal arguments may occur.
1475
1476\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00001477def fprintf(file, format, *args):
1478 file.write(format % args)
Guido van Rossum02455691997-07-17 16:21:52 +00001479\end{verbatim}
1480
Fred Drakea594baf1998-04-03 05:16:31 +00001481
Fred Drakeb7833d31998-09-11 16:21:55 +00001482\subsection{Lambda Forms \label{lambda}}
Fred Drakea594baf1998-04-03 05:16:31 +00001483
1484By popular demand, a few features commonly found in functional
1485programming languages and Lisp have been added to Python. With the
1486\keyword{lambda} keyword, small anonymous functions can be created.
1487Here's a function that returns the sum of its two arguments:
1488\samp{lambda a, b: a+b}. Lambda forms can be used wherever function
1489objects are required. They are syntactically restricted to a single
1490expression. Semantically, they are just syntactic sugar for a normal
1491function definition. Like nested function definitions, lambda forms
1492cannot reference variables from the containing scope, but this can be
1493overcome through the judicious use of default argument values, e.g.
1494
1495\begin{verbatim}
1496def make_incrementor(n):
1497 return lambda x, incr=n: x+incr
1498\end{verbatim}
1499
Fred Drake20082d92000-04-03 04:26:58 +00001500
Fred Drakeb7833d31998-09-11 16:21:55 +00001501\subsection{Documentation Strings \label{docstrings}}
Fred Drakea594baf1998-04-03 05:16:31 +00001502
1503There are emerging conventions about the content and formatting of
1504documentation strings.
Fred Drake20082d92000-04-03 04:26:58 +00001505\index{docstrings}\index{documentation strings}
1506\index{strings, documentation}
Fred Drakea594baf1998-04-03 05:16:31 +00001507
1508The first line should always be a short, concise summary of the
1509object's purpose. For brevity, it should not explicitly state the
1510object's name or type, since these are available by other means
1511(except if the name happens to be a verb describing a function's
1512operation). This line should begin with a capital letter and end with
1513a period.
1514
1515If there are more lines in the documentation string, the second line
1516should be blank, visually separating the summary from the rest of the
Fred Drake4b1a07a1999-03-12 18:21:32 +00001517description. The following lines should be one or more paragraphs
1518describing the object's calling conventions, its side effects, etc.
Fred Drakea594baf1998-04-03 05:16:31 +00001519
1520The Python parser does not strip indentation from multi-line string
1521literals in Python, so tools that process documentation have to strip
Fred Drake20082d92000-04-03 04:26:58 +00001522indentation if desired. This is done using the following convention.
1523The first non-blank line \emph{after} the first line of the string
1524determines the amount of indentation for the entire documentation
1525string. (We can't use the first line since it is generally adjacent
1526to the string's opening quotes so its indentation is not apparent in
1527the string literal.) Whitespace ``equivalent'' to this indentation is
1528then stripped from the start of all lines of the string. Lines that
1529are indented less should not occur, but if they occur all their
1530leading whitespace should be stripped. Equivalence of whitespace
1531should be tested after expansion of tabs (to 8 spaces, normally).
1532
1533Here is an example of a multi-line docstring:
1534
1535\begin{verbatim}
1536>>> def my_function():
1537... """Do nothing, but document it.
1538...
1539... No, really, it doesn't do anything.
1540... """
1541... pass
1542...
1543>>> print my_function.__doc__
1544Do nothing, but document it.
1545
1546 No, really, it doesn't do anything.
1547
1548\end{verbatim}
Fred Drakea594baf1998-04-03 05:16:31 +00001549
1550
1551
Fred Drakeb7833d31998-09-11 16:21:55 +00001552\chapter{Data Structures \label{structures}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001553
1554This chapter describes some things you've learned about already in
1555more detail, and adds some new things as well.
1556
Fred Drake20082d92000-04-03 04:26:58 +00001557
Fred Drakeb7833d31998-09-11 16:21:55 +00001558\section{More on Lists \label{moreLists}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001559
1560The list data type has some more methods. Here are all of the methods
Fred Drakeed688541998-02-11 22:29:17 +00001561of list objects:
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001562
Guido van Rossum7d9f8d71991-01-22 11:45:00 +00001563\begin{description}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001564
Fred Drake20082d92000-04-03 04:26:58 +00001565\item[\code{append(x)}]
1566Add an item to the end of the list;
1567equivalent to \code{a[len(a):] = [x]}.
1568
1569\item[\code{extend(L)}]
1570Extend the list by appending all the items in the given list;
1571equivalent to \code{a[len(a):] = L}.
1572
Fred Drakeeee08cd1997-12-04 15:43:15 +00001573\item[\code{insert(i, x)}]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001574Insert an item at a given position. The first argument is the index of
Fred Drakeeee08cd1997-12-04 15:43:15 +00001575the element before which to insert, so \code{a.insert(0, x)} inserts at
1576the front of the list, and \code{a.insert(len(a), x)} is equivalent to
1577\code{a.append(x)}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001578
Fred Drake20082d92000-04-03 04:26:58 +00001579\item[\code{remove(x)}]
1580Remove the first item from the list whose value is \code{x}.
1581It is an error if there is no such item.
1582
1583\item[\code{pop(\optional{i})}]
1584Remove the item at the given position in the list, and return it. If
1585no index is specified, \code{a.pop()} returns the last item in the
1586list. The item is also removed from the list.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001587
Fred Drakeeee08cd1997-12-04 15:43:15 +00001588\item[\code{index(x)}]
1589Return the index in the list of the first item whose value is \code{x}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001590It is an error if there is no such item.
1591
Fred Drake20082d92000-04-03 04:26:58 +00001592\item[\code{count(x)}]
1593Return the number of times \code{x} appears in the list.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001594
Fred Drakeeee08cd1997-12-04 15:43:15 +00001595\item[\code{sort()}]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001596Sort the items of the list, in place.
1597
Fred Drakeeee08cd1997-12-04 15:43:15 +00001598\item[\code{reverse()}]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001599Reverse the elements of the list, in place.
1600
Guido van Rossum7d9f8d71991-01-22 11:45:00 +00001601\end{description}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001602
Fred Drake20082d92000-04-03 04:26:58 +00001603An example that uses most of the list methods:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001604
Fred Drake8842e861998-02-13 07:16:30 +00001605\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001606>>> a = [66.6, 333, 333, 1, 1234.5]
Guido van Rossum6938f061994-08-01 12:22:53 +00001607>>> print a.count(333), a.count(66.6), a.count('x')
16082 1 0
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001609>>> a.insert(2, -1)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001610>>> a.append(333)
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001611>>> a
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001612[66.6, 333, -1, 333, 1, 1234.5, 333]
1613>>> a.index(333)
16141
1615>>> a.remove(333)
1616>>> a
1617[66.6, -1, 333, 1, 1234.5, 333]
1618>>> a.reverse()
1619>>> a
1620[333, 1234.5, 1, 333, -1, 66.6]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001621>>> a.sort()
1622>>> a
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001623[-1, 1, 66.6, 333, 333, 1234.5]
Fred Drake8842e861998-02-13 07:16:30 +00001624\end{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001625
Fred Drake20082d92000-04-03 04:26:58 +00001626
1627\subsection{Using Lists as Stacks \label{lists-as-stacks}}
1628\sectionauthor{Ka-Ping Yee}{ping@lfs.org}
1629
1630The list methods make it very easy to use a list as a stack, where the
1631last element added is the first element retrieved (``last-in,
1632first-out''). To add an item to the top of the stack, use
1633\method{append()}. To retrieve an item from the top of the stack, use
1634\method{pop()} without an explicit index. For example:
1635
1636\begin{verbatim}
1637>>> stack = [3, 4, 5]
1638>>> stack.append(6)
1639>>> stack.append(7)
1640>>> stack
1641[3, 4, 5, 6, 7]
1642>>> stack.pop()
16437
1644>>> stack
1645[3, 4, 5, 6]
1646>>> stack.pop()
16476
1648>>> stack.pop()
16495
1650>>> stack
1651[3, 4]
1652\end{verbatim}
1653
1654
1655\subsection{Using Lists as Queues \label{lists-as-queues}}
1656\sectionauthor{Ka-Ping Yee}{ping@lfs.org}
1657
1658You can also use a list conveniently as a queue, where the first
1659element added is the first element retrieved (``first-in,
1660first-out''). To add an item to the back of the queue, use
1661\method{append()}. To retrieve an item from the front of the queue,
1662use \method{pop()} with \code{0} as the index. For example:
1663
1664\begin{verbatim}
1665>>> queue = ["Eric", "John", "Michael"]
1666>>> queue.append("Terry") # Terry arrives
1667>>> queue.append("Graham") # Graham arrives
1668>>> queue.pop(0)
1669'Eric'
1670>>> queue.pop(0)
1671'John'
1672>>> queue
1673['Michael', 'Terry', 'Graham']
1674\end{verbatim}
1675
1676
Fred Drakeb7833d31998-09-11 16:21:55 +00001677\subsection{Functional Programming Tools \label{functional}}
Guido van Rossum02455691997-07-17 16:21:52 +00001678
1679There are three built-in functions that are very useful when used with
Fred Drake8842e861998-02-13 07:16:30 +00001680lists: \function{filter()}, \function{map()}, and \function{reduce()}.
Guido van Rossum02455691997-07-17 16:21:52 +00001681
Fred Drake8842e861998-02-13 07:16:30 +00001682\samp{filter(\var{function}, \var{sequence})} returns a sequence (of
1683the same type, if possible) consisting of those items from the
1684sequence for which \code{\var{function}(\var{item})} is true. For
1685example, to compute some primes:
Guido van Rossum02455691997-07-17 16:21:52 +00001686
1687\begin{verbatim}
Fred Drakeee84d591999-03-10 17:25:30 +00001688>>> def f(x): return x % 2 != 0 and x % 3 != 0
Fred Drake8842e861998-02-13 07:16:30 +00001689...
1690>>> filter(f, range(2, 25))
1691[5, 7, 11, 13, 17, 19, 23]
Guido van Rossum02455691997-07-17 16:21:52 +00001692\end{verbatim}
1693
Fred Drake8842e861998-02-13 07:16:30 +00001694\samp{map(\var{function}, \var{sequence})} calls
1695\code{\var{function}(\var{item})} for each of the sequence's items and
1696returns a list of the return values. For example, to compute some
1697cubes:
Guido van Rossum02455691997-07-17 16:21:52 +00001698
1699\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00001700>>> def cube(x): return x*x*x
1701...
1702>>> map(cube, range(1, 11))
1703[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Guido van Rossum02455691997-07-17 16:21:52 +00001704\end{verbatim}
1705
1706More than one sequence may be passed; the function must then have as
1707many arguments as there are sequences and is called with the
Fred Drake8842e861998-02-13 07:16:30 +00001708corresponding item from each sequence (or \code{None} if some sequence
1709is shorter than another). If \code{None} is passed for the function,
Guido van Rossum02455691997-07-17 16:21:52 +00001710a function returning its argument(s) is substituted.
1711
1712Combining these two special cases, we see that
Fred Drake8842e861998-02-13 07:16:30 +00001713\samp{map(None, \var{list1}, \var{list2})} is a convenient way of
1714turning a pair of lists into a list of pairs. For example:
Guido van Rossum02455691997-07-17 16:21:52 +00001715
1716\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00001717>>> seq = range(8)
1718>>> def square(x): return x*x
1719...
1720>>> map(None, seq, map(square, seq))
1721[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49)]
Guido van Rossum02455691997-07-17 16:21:52 +00001722\end{verbatim}
1723
Fred Drake8842e861998-02-13 07:16:30 +00001724\samp{reduce(\var{func}, \var{sequence})} returns a single value
1725constructed by calling the binary function \var{func} on the first two
1726items of the sequence, then on the result and the next item, and so
1727on. For example, to compute the sum of the numbers 1 through 10:
Guido van Rossum02455691997-07-17 16:21:52 +00001728
1729\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00001730>>> def add(x,y): return x+y
1731...
1732>>> reduce(add, range(1, 11))
173355
Guido van Rossum02455691997-07-17 16:21:52 +00001734\end{verbatim}
1735
1736If there's only one item in the sequence, its value is returned; if
1737the sequence is empty, an exception is raised.
1738
1739A third argument can be passed to indicate the starting value. In this
1740case the starting value is returned for an empty sequence, and the
1741function is first applied to the starting value and the first sequence
1742item, then to the result and the next item, and so on. For example,
1743
1744\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00001745>>> def sum(seq):
1746... def add(x,y): return x+y
1747... return reduce(add, seq, 0)
1748...
1749>>> sum(range(1, 11))
175055
1751>>> sum([])
17520
Guido van Rossum02455691997-07-17 16:21:52 +00001753\end{verbatim}
1754
Fred Drakeb7833d31998-09-11 16:21:55 +00001755\section{The \keyword{del} statement \label{del}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001756
1757There is a way to remove an item from a list given its index instead
Fred Drakeeee08cd1997-12-04 15:43:15 +00001758of its value: the \code{del} statement. This can also be used to
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001759remove slices from a list (which we did earlier by assignment of an
1760empty list to the slice). For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001761
Fred Drake8842e861998-02-13 07:16:30 +00001762\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001763>>> a
1764[-1, 1, 66.6, 333, 333, 1234.5]
1765>>> del a[0]
1766>>> a
1767[1, 66.6, 333, 333, 1234.5]
1768>>> del a[2:4]
1769>>> a
1770[1, 66.6, 1234.5]
Fred Drake8842e861998-02-13 07:16:30 +00001771\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001772
1773\keyword{del} can also be used to delete entire variables:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001774
Fred Drake8842e861998-02-13 07:16:30 +00001775\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001776>>> del a
Fred Drake8842e861998-02-13 07:16:30 +00001777\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001778
Fred Drakeeee08cd1997-12-04 15:43:15 +00001779Referencing the name \code{a} hereafter is an error (at least until
Fred Drake6c2176e1998-02-26 21:47:54 +00001780another value is assigned to it). We'll find other uses for
1781\keyword{del} later.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001782
Fred Drakeb7833d31998-09-11 16:21:55 +00001783\section{Tuples and Sequences \label{tuples}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001784
1785We saw that lists and strings have many common properties, e.g.,
Fred Drakeeee08cd1997-12-04 15:43:15 +00001786indexing and slicing operations. They are two examples of
1787\emph{sequence} data types. Since Python is an evolving language,
1788other sequence data types may be added. There is also another
1789standard sequence data type: the \emph{tuple}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001790
1791A tuple consists of a number of values separated by commas, for
1792instance:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001793
Fred Drake8842e861998-02-13 07:16:30 +00001794\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001795>>> t = 12345, 54321, 'hello!'
1796>>> t[0]
179712345
1798>>> t
1799(12345, 54321, 'hello!')
1800>>> # Tuples may be nested:
Guido van Rossum6938f061994-08-01 12:22:53 +00001801... u = t, (1, 2, 3, 4, 5)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001802>>> u
1803((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
Fred Drake8842e861998-02-13 07:16:30 +00001804\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001805
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001806As you see, on output tuples are alway enclosed in parentheses, so
1807that nested tuples are interpreted correctly; they may be input with
1808or without surrounding parentheses, although often parentheses are
1809necessary anyway (if the tuple is part of a larger expression).
1810
1811Tuples have many uses, e.g., (x, y) coordinate pairs, employee records
1812from a database, etc. Tuples, like strings, are immutable: it is not
1813possible to assign to the individual items of a tuple (you can
1814simulate much of the same effect with slicing and concatenation,
1815though).
1816
1817A special problem is the construction of tuples containing 0 or 1
Guido van Rossum6938f061994-08-01 12:22:53 +00001818items: the syntax has some extra quirks to accommodate these. Empty
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001819tuples are constructed by an empty pair of parentheses; a tuple with
1820one item is constructed by following a value with a comma
1821(it is not sufficient to enclose a single value in parentheses).
1822Ugly, but effective. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001823
Fred Drake8842e861998-02-13 07:16:30 +00001824\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001825>>> empty = ()
1826>>> singleton = 'hello', # <-- note trailing comma
1827>>> len(empty)
18280
1829>>> len(singleton)
18301
1831>>> singleton
1832('hello',)
Fred Drake8842e861998-02-13 07:16:30 +00001833\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001834
Fred Drakeeee08cd1997-12-04 15:43:15 +00001835The statement \code{t = 12345, 54321, 'hello!'} is an example of
1836\emph{tuple packing}: the values \code{12345}, \code{54321} and
1837\code{'hello!'} are packed together in a tuple. The reverse operation
1838is also possible, e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001839
Fred Drake8842e861998-02-13 07:16:30 +00001840\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001841>>> x, y, z = t
Fred Drake8842e861998-02-13 07:16:30 +00001842\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001843
Fred Drakeeee08cd1997-12-04 15:43:15 +00001844This is called, appropriately enough, \emph{tuple unpacking}. Tuple
Fred Drakef1ad2071999-06-30 15:32:50 +00001845unpacking requires that the list of variables on the left have the same
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001846number of elements as the length of the tuple. Note that multiple
1847assignment is really just a combination of tuple packing and tuple
1848unpacking!
1849
Guido van Rossumaee5e261998-08-07 17:45:09 +00001850% XXX This is no longer necessary!
Fred Drakeeee08cd1997-12-04 15:43:15 +00001851Occasionally, the corresponding operation on lists is useful: \emph{list
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001852unpacking}. This is supported by enclosing the list of variables in
1853square brackets:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001854
Fred Drake8842e861998-02-13 07:16:30 +00001855\begin{verbatim}
Guido van Rossume5f8b601995-01-04 19:12:49 +00001856>>> a = ['spam', 'eggs', 100, 1234]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001857>>> [a1, a2, a3, a4] = a
Fred Drake8842e861998-02-13 07:16:30 +00001858\end{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001859
Guido van Rossumaee5e261998-08-07 17:45:09 +00001860% XXX Add a bit on the difference between tuples and lists.
1861% XXX Also explain that a tuple can *contain* a mutable object!
1862
Fred Drakeb7833d31998-09-11 16:21:55 +00001863\section{Dictionaries \label{dictionaries}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001864
Fred Drakeeee08cd1997-12-04 15:43:15 +00001865Another useful data type built into Python is the \emph{dictionary}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001866Dictionaries are sometimes found in other languages as ``associative
1867memories'' or ``associative arrays''. Unlike sequences, which are
Fred Drakeeee08cd1997-12-04 15:43:15 +00001868indexed by a range of numbers, dictionaries are indexed by \emph{keys},
Fred Drakef1ad2071999-06-30 15:32:50 +00001869which can be any immutable type; strings and numbers can always be
Guido van Rossum02455691997-07-17 16:21:52 +00001870keys. Tuples can be used as keys if they contain only strings,
1871numbers, or tuples. You can't use lists as keys, since lists can be
1872modified in place using their \code{append()} method.
1873
Guido van Rossum6938f061994-08-01 12:22:53 +00001874It is best to think of a dictionary as an unordered set of
Fred Drakeeee08cd1997-12-04 15:43:15 +00001875\emph{key:value} pairs, with the requirement that the keys are unique
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001876(within one dictionary).
Fred Drakeeee08cd1997-12-04 15:43:15 +00001877A pair of braces creates an empty dictionary: \code{\{\}}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001878Placing a comma-separated list of key:value pairs within the
1879braces adds initial key:value pairs to the dictionary; this is also the
1880way dictionaries are written on output.
1881
1882The main operations on a dictionary are storing a value with some key
1883and extracting the value given the key. It is also possible to delete
1884a key:value pair
Fred Drakeeee08cd1997-12-04 15:43:15 +00001885with \code{del}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001886If you store using a key that is already in use, the old value
1887associated with that key is forgotten. It is an error to extract a
Guido van Rossum6938f061994-08-01 12:22:53 +00001888value using a non-existent key.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001889
Fred Drake20082d92000-04-03 04:26:58 +00001890The \code{keys()} method of a dictionary object returns a list of all
1891the keys used in the dictionary, in random order (if you want it
1892sorted, just apply the \code{sort()} method to the list of keys). To
1893check whether a single key is in the dictionary, use the
1894\code{has_key()} method of the dictionary.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001895
1896Here is a small example using a dictionary:
1897
Fred Drake8842e861998-02-13 07:16:30 +00001898\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001899>>> tel = {'jack': 4098, 'sape': 4139}
1900>>> tel['guido'] = 4127
1901>>> tel
Guido van Rossum8f96f771991-11-12 15:45:03 +00001902{'sape': 4139, 'guido': 4127, 'jack': 4098}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001903>>> tel['jack']
19044098
1905>>> del tel['sape']
1906>>> tel['irv'] = 4127
1907>>> tel
Guido van Rossum8f96f771991-11-12 15:45:03 +00001908{'guido': 4127, 'irv': 4127, 'jack': 4098}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001909>>> tel.keys()
1910['guido', 'irv', 'jack']
1911>>> tel.has_key('guido')
19121
Fred Drake8842e861998-02-13 07:16:30 +00001913\end{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001914
Fred Drakeb7833d31998-09-11 16:21:55 +00001915\section{More on Conditions \label{conditions}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001916
Fred Drakeeee08cd1997-12-04 15:43:15 +00001917The conditions used in \code{while} and \code{if} statements above can
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001918contain other operators besides comparisons.
1919
Fred Drakeeee08cd1997-12-04 15:43:15 +00001920The comparison operators \code{in} and \code{not in} check whether a value
1921occurs (does not occur) in a sequence. The operators \code{is} and
1922\code{is not} compare whether two objects are really the same object; this
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001923only matters for mutable objects like lists. All comparison operators
1924have the same priority, which is lower than that of all numerical
1925operators.
1926
Fred Drakef1ad2071999-06-30 15:32:50 +00001927Comparisons can be chained: e.g., \code{a < b == c} tests whether
1928\code{a} is less than \code{b} and moreover \code{b} equals \code{c}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001929
Fred Drakeeee08cd1997-12-04 15:43:15 +00001930Comparisons may be combined by the Boolean operators \code{and} and
1931\code{or}, and the outcome of a comparison (or of any other Boolean
1932expression) may be negated with \code{not}. These all have lower
1933priorities than comparison operators again; between them, \code{not} has
1934the highest priority, and \code{or} the lowest, so that
1935\code{A and not B or C} is equivalent to \code{(A and (not B)) or C}. Of
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001936course, parentheses can be used to express the desired composition.
1937
Fred Drakeeee08cd1997-12-04 15:43:15 +00001938The Boolean operators \code{and} and \code{or} are so-called
1939\emph{shortcut} operators: their arguments are evaluated from left to
1940right, and evaluation stops as soon as the outcome is determined.
1941E.g., if \code{A} and \code{C} are true but \code{B} is false, \code{A
1942and B and C} does not evaluate the expression C. In general, the
1943return value of a shortcut operator, when used as a general value and
1944not as a Boolean, is the last evaluated argument.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001945
1946It is possible to assign the result of a comparison or other Boolean
Guido van Rossum6938f061994-08-01 12:22:53 +00001947expression to a variable. For example,
1948
Fred Drake8842e861998-02-13 07:16:30 +00001949\begin{verbatim}
Guido van Rossum6938f061994-08-01 12:22:53 +00001950>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
1951>>> non_null = string1 or string2 or string3
1952>>> non_null
1953'Trondheim'
Fred Drake8842e861998-02-13 07:16:30 +00001954\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001955
Fred Drakeee84d591999-03-10 17:25:30 +00001956Note that in Python, unlike C, assignment cannot occur inside expressions.
Fred Drake20082d92000-04-03 04:26:58 +00001957C programmers may grumble about this, but it avoids a common class of
1958problems encountered in C programs: typing \code{=} in an expression when
1959\code{==} was intended.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001960
Fred Drakeb7833d31998-09-11 16:21:55 +00001961\section{Comparing Sequences and Other Types \label{comparing}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001962
1963Sequence objects may be compared to other objects with the same
Fred Drakeeee08cd1997-12-04 15:43:15 +00001964sequence type. The comparison uses \emph{lexicographical} ordering:
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001965first the first two items are compared, and if they differ this
1966determines the outcome of the comparison; if they are equal, the next
1967two items are compared, and so on, until either sequence is exhausted.
1968If two items to be compared are themselves sequences of the same type,
Guido van Rossum6938f061994-08-01 12:22:53 +00001969the lexicographical comparison is carried out recursively. If all
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001970items of two sequences compare equal, the sequences are considered
1971equal. If one sequence is an initial subsequence of the other, the
1972shorted sequence is the smaller one. Lexicographical ordering for
Guido van Rossum47b4c0f1995-03-15 11:25:32 +00001973strings uses the \ASCII{} ordering for individual characters. Some
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001974examples of comparisons between sequences with the same types:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001975
Fred Drake8842e861998-02-13 07:16:30 +00001976\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001977(1, 2, 3) < (1, 2, 4)
1978[1, 2, 3] < [1, 2, 4]
1979'ABC' < 'C' < 'Pascal' < 'Python'
1980(1, 2, 3, 4) < (1, 2, 4)
1981(1, 2) < (1, 2, -1)
Fred Drake511281a1999-04-16 13:17:04 +00001982(1, 2, 3) == (1.0, 2.0, 3.0)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001983(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
Fred Drake8842e861998-02-13 07:16:30 +00001984\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00001985
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001986Note that comparing objects of different types is legal. The outcome
1987is deterministic but arbitrary: the types are ordered by their name.
1988Thus, a list is always smaller than a string, a string is always
1989smaller than a tuple, etc. Mixed numeric types are compared according
Fred Drake93aa0f21999-04-05 21:39:17 +00001990to their numeric value, so 0 equals 0.0, etc.\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +00001991 The rules for comparing objects of different types should
1992 not be relied upon; they may change in a future version of
1993 the language.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001994}
1995
Guido van Rossum5e0759d1992-08-07 16:06:24 +00001996
Fred Drakeb7833d31998-09-11 16:21:55 +00001997\chapter{Modules \label{modules}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001998
Guido van Rossum4410c751991-06-04 20:22:18 +00001999If you quit from the Python interpreter and enter it again, the
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002000definitions you have made (functions and variables) are lost.
2001Therefore, if you want to write a somewhat longer program, you are
2002better off using a text editor to prepare the input for the interpreter
Guido van Rossum16d6e711994-08-08 12:30:22 +00002003and running it with that file as input instead. This is known as creating a
Fred Drakeeee08cd1997-12-04 15:43:15 +00002004\emph{script}. As your program gets longer, you may want to split it
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002005into several files for easier maintenance. You may also want to use a
2006handy function that you've written in several programs without copying
2007its definition into each program.
2008
Guido van Rossum4410c751991-06-04 20:22:18 +00002009To support this, Python has a way to put definitions in a file and use
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002010them in a script or in an interactive instance of the interpreter.
Fred Drakeeee08cd1997-12-04 15:43:15 +00002011Such a file is called a \emph{module}; definitions from a module can be
2012\emph{imported} into other modules or into the \emph{main} module (the
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002013collection of variables that you have access to in a script
2014executed at the top level
2015and in calculator mode).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002016
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002017A module is a file containing Python definitions and statements. The
Fred Drakeeee08cd1997-12-04 15:43:15 +00002018file name is the module name with the suffix \file{.py} appended. Within
Guido van Rossum6938f061994-08-01 12:22:53 +00002019a module, the module's name (as a string) is available as the value of
Fred Drakeeee08cd1997-12-04 15:43:15 +00002020the global variable \code{__name__}. For instance, use your favorite text
2021editor to create a file called \file{fibo.py} in the current directory
Guido van Rossum6938f061994-08-01 12:22:53 +00002022with the following contents:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002023
Fred Drake8842e861998-02-13 07:16:30 +00002024\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002025# Fibonacci numbers module
2026
2027def fib(n): # write Fibonacci series up to n
2028 a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00002029 while b < n:
Fred Drakeeee08cd1997-12-04 15:43:15 +00002030 print b,
2031 a, b = b, a+b
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002032
2033def fib2(n): # return Fibonacci series up to n
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002034 result = []
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002035 a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00002036 while b < n:
Fred Drakeeee08cd1997-12-04 15:43:15 +00002037 result.append(b)
2038 a, b = b, a+b
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002039 return result
Fred Drake8842e861998-02-13 07:16:30 +00002040\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002041
Guido van Rossum4410c751991-06-04 20:22:18 +00002042Now enter the Python interpreter and import this module with the
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002043following command:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002044
Fred Drake8842e861998-02-13 07:16:30 +00002045\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002046>>> import fibo
Fred Drake8842e861998-02-13 07:16:30 +00002047\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002048
Fred Drakef1ad2071999-06-30 15:32:50 +00002049This does not enter the names of the functions defined in \code{fibo}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002050directly in the current symbol table; it only enters the module name
Fred Drakef1ad2071999-06-30 15:32:50 +00002051\code{fibo} there.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002052Using the module name you can access the functions:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002053
Fred Drake8842e861998-02-13 07:16:30 +00002054\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002055>>> fibo.fib(1000)
20561 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
2057>>> fibo.fib2(100)
2058[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Guido van Rossum6938f061994-08-01 12:22:53 +00002059>>> fibo.__name__
2060'fibo'
Fred Drake8842e861998-02-13 07:16:30 +00002061\end{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002062%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002063If you intend to use a function often you can assign it to a local name:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002064
Fred Drake8842e861998-02-13 07:16:30 +00002065\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002066>>> fib = fibo.fib
2067>>> fib(500)
20681 1 2 3 5 8 13 21 34 55 89 144 233 377
Fred Drake8842e861998-02-13 07:16:30 +00002069\end{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002070
Guido van Rossum02455691997-07-17 16:21:52 +00002071
Fred Drakeb7833d31998-09-11 16:21:55 +00002072\section{More on Modules \label{moreModules}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002073
2074A module can contain executable statements as well as function
Fred Drake20082d92000-04-03 04:26:58 +00002075definitions.
2076These statements are intended to initialize the module.
2077They are executed only the
2078\emph{first} time the module is imported somewhere.\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +00002079 In fact function definitions are also `statements' that are
2080 `executed'; the execution enters the function name in the
2081 module's global symbol table.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002082}
2083
2084Each module has its own private symbol table, which is used as the
2085global symbol table by all functions defined in the module.
2086Thus, the author of a module can use global variables in the module
2087without worrying about accidental clashes with a user's global
2088variables.
2089On the other hand, if you know what you are doing you can touch a
2090module's global variables with the same notation used to refer to its
2091functions,
Fred Drakeeee08cd1997-12-04 15:43:15 +00002092\code{modname.itemname}.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002093
Fred Drake20082d92000-04-03 04:26:58 +00002094Modules can import other modules. It is customary but not required to
2095place all \keyword{import} statements at the beginning of a module (or
2096script, for that matter). The imported module names are placed in the
2097importing module's global symbol table.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002098
Fred Drake20082d92000-04-03 04:26:58 +00002099There is a variant of the \keyword{import} statement that imports
2100names from a module directly into the importing module's symbol
2101table. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002102
Fred Drake8842e861998-02-13 07:16:30 +00002103\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002104>>> from fibo import fib, fib2
2105>>> fib(500)
21061 1 2 3 5 8 13 21 34 55 89 144 233 377
Fred Drake8842e861998-02-13 07:16:30 +00002107\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002108
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002109This does not introduce the module name from which the imports are taken
Fred Drakeeee08cd1997-12-04 15:43:15 +00002110in the local symbol table (so in the example, \code{fibo} is not
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002111defined).
2112
2113There is even a variant to import all names that a module defines:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002114
Fred Drake8842e861998-02-13 07:16:30 +00002115\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002116>>> from fibo import *
2117>>> fib(500)
21181 1 2 3 5 8 13 21 34 55 89 144 233 377
Fred Drake8842e861998-02-13 07:16:30 +00002119\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002120
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002121This imports all names except those beginning with an underscore
Fred Drakeeee08cd1997-12-04 15:43:15 +00002122(\code{_}).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002123
Fred Drakeb7833d31998-09-11 16:21:55 +00002124\subsection{The Module Search Path \label{searchPath}}
Guido van Rossum02455691997-07-17 16:21:52 +00002125
Guido van Rossumaee5e261998-08-07 17:45:09 +00002126% XXX Need to document that a lone .pyc/.pyo is acceptable too!
2127
Fred Drake391564f1998-04-01 23:11:56 +00002128\indexiii{module}{search}{path}
Fred Drake8842e861998-02-13 07:16:30 +00002129When a module named \module{spam} is imported, the interpreter searches
Fred Drakeeee08cd1997-12-04 15:43:15 +00002130for a file named \file{spam.py} in the current directory,
Guido van Rossum02455691997-07-17 16:21:52 +00002131and then in the list of directories specified by
Fred Drake391564f1998-04-01 23:11:56 +00002132the environment variable \envvar{PYTHONPATH}. This has the same syntax as
2133the shell variable \envvar{PATH}, i.e., a list of
2134directory names. When \envvar{PYTHONPATH} is not set, or when the file
Guido van Rossum02455691997-07-17 16:21:52 +00002135is not found there, the search continues in an installation-dependent
Fred Drake391564f1998-04-01 23:11:56 +00002136default path; on \UNIX{}, this is usually \file{.:/usr/local/lib/python}.
Guido van Rossum02455691997-07-17 16:21:52 +00002137
2138Actually, modules are searched in the list of directories given by the
Fred Drakeeee08cd1997-12-04 15:43:15 +00002139variable \code{sys.path} which is initialized from the directory
2140containing the input script (or the current directory),
Fred Drake391564f1998-04-01 23:11:56 +00002141\envvar{PYTHONPATH} and the installation-dependent default. This allows
Guido van Rossum02455691997-07-17 16:21:52 +00002142Python programs that know what they're doing to modify or replace the
2143module search path. See the section on Standard Modules later.
2144
2145\subsection{``Compiled'' Python files}
2146
2147As an important speed-up of the start-up time for short programs that
Fred Drakeeee08cd1997-12-04 15:43:15 +00002148use a lot of standard modules, if a file called \file{spam.pyc} exists
2149in the directory where \file{spam.py} is found, this is assumed to
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002150contain an already-``byte-compiled'' version of the module \module{spam}.
Fred Drake8842e861998-02-13 07:16:30 +00002151The modification time of the version of \file{spam.py} used to create
Fred Drake20082d92000-04-03 04:26:58 +00002152\file{spam.pyc} is recorded in \file{spam.pyc}, and the
2153\file{.pyc} file is ignored if these don't match.
Guido van Rossum02455691997-07-17 16:21:52 +00002154
Fred Drake20082d92000-04-03 04:26:58 +00002155Normally, you don't need to do anything to create the
2156\file{spam.pyc} file. Whenever \file{spam.py} is successfully
2157compiled, an attempt is made to write the compiled version to
2158\file{spam.pyc}. It is not an error if this attempt fails; if for any
2159reason the file is not written completely, the resulting
2160\file{spam.pyc} file will be recognized as invalid and thus ignored
2161later. The contents of the \file{spam.pyc} file are platform
2162independent, so a Python module directory can be shared by machines of
2163different architectures.
Guido van Rossum02455691997-07-17 16:21:52 +00002164
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002165Some tips for experts:
2166
2167\begin{itemize}
2168
2169\item
Fred Drake37f15741999-11-10 16:21:37 +00002170When the Python interpreter is invoked with the \programopt{-O} flag,
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002171optimized code is generated and stored in \file{.pyo} files.
2172The optimizer currently doesn't help much; it only removes
2173\keyword{assert} statements and \code{SET_LINENO} instructions.
Fred Drake37f15741999-11-10 16:21:37 +00002174When \programopt{-O} is used, \emph{all} bytecode is optimized;
2175\code{.pyc} files are ignored and \code{.py} files are compiled to
2176optimized bytecode.
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002177
2178\item
Fred Drake37f15741999-11-10 16:21:37 +00002179Passing two \programopt{-O} flags to the Python interpreter
2180(\programopt{-OO}) will cause the bytecode compiler to perform
2181optimizations that could in some rare cases result in malfunctioning
2182programs. Currently only \code{__doc__} strings are removed from the
2183bytecode, resulting in more compact \file{.pyo} files. Since some
2184programs may rely on having these available, you should only use this
2185option if you know what you're doing.
Guido van Rossum6b86a421999-01-28 15:07:47 +00002186
2187\item
Fred Drake20082d92000-04-03 04:26:58 +00002188A program doesn't run any faster when it is read from a \file{.pyc} or
2189\file{.pyo} file than when it is read from a \file{.py} file; the only
2190thing that's faster about \file{.pyc} or \file{.pyo} files is the
2191speed with which they are loaded.
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002192
2193\item
Guido van Rossum002f7aa1998-06-28 19:16:38 +00002194When a script is run by giving its name on the command line, the
2195bytecode for the script is never written to a \file{.pyc} or
2196\file{.pyo} file. Thus, the startup time of a script may be reduced
2197by moving most of its code to a module and having a small bootstrap
2198script that imports that module.
2199
2200\item
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002201It is possible to have a file called \file{spam.pyc} (or
Fred Drake37f15741999-11-10 16:21:37 +00002202\file{spam.pyo} when \programopt{-O} is used) without a module
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002203\file{spam.py} in the same module. This can be used to distribute
2204a library of Python code in a form that is moderately hard to reverse
2205engineer.
2206
2207\item
2208The module \module{compileall}\refstmodindex{compileall} can create
Fred Drake37f15741999-11-10 16:21:37 +00002209\file{.pyc} files (or \file{.pyo} files when \programopt{-O} is used) for
Guido van Rossum13c8ef61998-05-29 19:12:23 +00002210all modules in a directory.
2211
2212\end{itemize}
2213
Guido van Rossum02455691997-07-17 16:21:52 +00002214
Fred Drakeb7833d31998-09-11 16:21:55 +00002215\section{Standard Modules \label{standardModules}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002216
Guido van Rossum4410c751991-06-04 20:22:18 +00002217Python comes with a library of standard modules, described in a separate
Fred Drake37f15741999-11-10 16:21:37 +00002218document, the \citetitle[../lib/lib.html]{Python Library Reference}
2219(``Library Reference'' hereafter). Some modules are built into the
2220interpreter; these provide access to operations that are not part of
2221the core of the language but are nevertheless built in, either for
2222efficiency or to provide access to operating system primitives such as
2223system calls. The set of such modules is a configuration option; e.g.,
2224the \module{amoeba} module is only provided on systems that somehow
Fred Drake8842e861998-02-13 07:16:30 +00002225support Amoeba primitives. One particular module deserves some
Fred Drake391564f1998-04-01 23:11:56 +00002226attention: \module{sys}\refstmodindex{sys}, which is built into every
Fred Drakeee84d591999-03-10 17:25:30 +00002227Python interpreter. The variables \code{sys.ps1} and
2228\code{sys.ps2} define the strings used as primary and secondary
2229prompts:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002230
Fred Drake8842e861998-02-13 07:16:30 +00002231\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002232>>> import sys
2233>>> sys.ps1
2234'>>> '
2235>>> sys.ps2
2236'... '
2237>>> sys.ps1 = 'C> '
2238C> print 'Yuck!'
2239Yuck!
2240C>
Fred Drake8842e861998-02-13 07:16:30 +00002241\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002242
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002243These two variables are only defined if the interpreter is in
2244interactive mode.
2245
Fred Drakeee84d591999-03-10 17:25:30 +00002246The variable \code{sys.path} is a list of strings that determine the
2247interpreter's search path for modules. It is initialized to a default
2248path taken from the environment variable \envvar{PYTHONPATH}, or from
2249a built-in default if \envvar{PYTHONPATH} is not set. You can modify
2250it using standard list operations, e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002251
Fred Drake8842e861998-02-13 07:16:30 +00002252\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002253>>> import sys
2254>>> sys.path.append('/ufs/guido/lib/python')
Fred Drake8842e861998-02-13 07:16:30 +00002255\end{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002256
Fred Drakeb7833d31998-09-11 16:21:55 +00002257\section{The \function{dir()} Function \label{dir}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002258
Fred Drake8842e861998-02-13 07:16:30 +00002259The built-in function \function{dir()} is used to find out which names
2260a module defines. It returns a sorted list of strings:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002261
Fred Drake8842e861998-02-13 07:16:30 +00002262\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002263>>> import fibo, sys
2264>>> dir(fibo)
Guido van Rossum6938f061994-08-01 12:22:53 +00002265['__name__', 'fib', 'fib2']
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002266>>> dir(sys)
Guido van Rossum6938f061994-08-01 12:22:53 +00002267['__name__', 'argv', 'builtin_module_names', 'copyright', 'exit',
2268'maxint', 'modules', 'path', 'ps1', 'ps2', 'setprofile', 'settrace',
2269'stderr', 'stdin', 'stdout', 'version']
Fred Drake8842e861998-02-13 07:16:30 +00002270\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002271
Fred Drake8842e861998-02-13 07:16:30 +00002272Without arguments, \function{dir()} lists the names you have defined
2273currently:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002274
Fred Drake8842e861998-02-13 07:16:30 +00002275\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002276>>> a = [1, 2, 3, 4, 5]
2277>>> import fibo, sys
2278>>> fib = fibo.fib
2279>>> dir()
Guido van Rossum6938f061994-08-01 12:22:53 +00002280['__name__', 'a', 'fib', 'fibo', 'sys']
Fred Drake8842e861998-02-13 07:16:30 +00002281\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002282
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002283Note that it lists all types of names: variables, modules, functions, etc.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002284
Fred Drake8842e861998-02-13 07:16:30 +00002285\function{dir()} does not list the names of built-in functions and
2286variables. If you want a list of those, they are defined in the
Fred Drake391564f1998-04-01 23:11:56 +00002287standard module \module{__builtin__}\refbimodindex{__builtin__}:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002288
Fred Drake8842e861998-02-13 07:16:30 +00002289\begin{verbatim}
Guido van Rossum4bd023f1993-10-27 13:49:20 +00002290>>> import __builtin__
2291>>> dir(__builtin__)
Guido van Rossum6938f061994-08-01 12:22:53 +00002292['AccessError', 'AttributeError', 'ConflictError', 'EOFError', 'IOError',
2293'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt',
2294'MemoryError', 'NameError', 'None', 'OverflowError', 'RuntimeError',
2295'SyntaxError', 'SystemError', 'SystemExit', 'TypeError', 'ValueError',
2296'ZeroDivisionError', '__name__', 'abs', 'apply', 'chr', 'cmp', 'coerce',
2297'compile', 'dir', 'divmod', 'eval', 'execfile', 'filter', 'float',
2298'getattr', 'hasattr', 'hash', 'hex', 'id', 'input', 'int', 'len', 'long',
2299'map', 'max', 'min', 'oct', 'open', 'ord', 'pow', 'range', 'raw_input',
2300'reduce', 'reload', 'repr', 'round', 'setattr', 'str', 'type', 'xrange']
Fred Drake8842e861998-02-13 07:16:30 +00002301\end{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002302
Fred Drakeb7833d31998-09-11 16:21:55 +00002303\section{Packages \label{packages}}
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002304
2305Packages are a way of structuring Python's module namespace
Fred Drakeb7833d31998-09-11 16:21:55 +00002306by using ``dotted module names''. For example, the module name
2307\module{A.B} designates a submodule named \samp{B} in a package named
2308\samp{A}. Just like the use of modules saves the authors of different
2309modules from having to worry about each other's global variable names,
2310the use of dotted module names saves the authors of multi-module
Fred Drake20082d92000-04-03 04:26:58 +00002311packages like NumPy or the Python Imaging Library from having to worry
2312about each other's module names.
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002313
2314Suppose you want to design a collection of modules (a ``package'') for
2315the uniform handling of sound files and sound data. There are many
2316different sound file formats (usually recognized by their extension,
2317e.g. \file{.wav}, \file{.aiff}, \file{.au}), so you may need to create
2318and maintain a growing collection of modules for the conversion
2319between the various file formats. There are also many different
2320operations you might want to perform on sound data (e.g. mixing,
2321adding echo, applying an equalizer function, creating an artificial
2322stereo effect), so in addition you will be writing a never-ending
2323stream of modules to perform these operations. Here's a possible
2324structure for your package (expressed in terms of a hierarchical
2325filesystem):
2326
2327\begin{verbatim}
2328Sound/ Top-level package
2329 __init__.py Initialize the sound package
2330 Formats/ Subpackage for file format conversions
2331 __init__.py
2332 wavread.py
2333 wavwrite.py
2334 aiffread.py
2335 aiffwrite.py
2336 auread.py
2337 auwrite.py
2338 ...
2339 Effects/ Subpackage for sound effects
2340 __init__.py
2341 echo.py
2342 surround.py
2343 reverse.py
2344 ...
2345 Filters/ Subpackage for filters
2346 __init__.py
2347 equalizer.py
2348 vocoder.py
2349 karaoke.py
2350 ...
2351\end{verbatim}
2352The \file{__init__.py} files are required to make Python treat the
2353directories as containing packages; this is done to prevent
2354directories with a common name, such as \samp{string}, from
2355unintentionally hiding valid modules that occur later on the module
2356search path. In the simplest case, \file{__init__.py} can just be an
2357empty file, but it can also execute initialization code for the
2358package or set the \code{__all__} variable, described later.
2359
2360Users of the package can import individual modules from the
2361package, for example:
2362
2363\begin{verbatim}
2364import Sound.Effects.echo
2365\end{verbatim}
2366This loads the submodule \module{Sound.Effects.echo}. It must be referenced
2367with its full name, e.g.
2368
2369\begin{verbatim}
2370Sound.Effects.echo.echofilter(input, output, delay=0.7, atten=4)
2371\end{verbatim}
2372An alternative way of importing the submodule is:
2373
2374\begin{verbatim}
2375from Sound.Effects import echo
2376\end{verbatim}
2377This also loads the submodule \module{echo}, and makes it available without
2378its package prefix, so it can be used as follows:
2379
2380\begin{verbatim}
2381echo.echofilter(input, output, delay=0.7, atten=4)
2382\end{verbatim}
2383
2384Yet another variation is to import the desired function or variable directly:
2385
2386\begin{verbatim}
2387from Sound.Effects.echo import echofilter
2388\end{verbatim}
2389
2390Again, this loads the submodule \module{echo}, but this makes its function
Fred Drake20082d92000-04-03 04:26:58 +00002391\function{echofilter()} directly available:
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002392
2393\begin{verbatim}
2394echofilter(input, output, delay=0.7, atten=4)
2395\end{verbatim}
2396
2397Note that when using \code{from \var{package} import \var{item}}, the
Fred Drake20082d92000-04-03 04:26:58 +00002398item can be either a submodule (or subpackage) of the package, or some
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002399other name defined in the package, like a function, class or
2400variable. The \code{import} statement first tests whether the item is
2401defined in the package; if not, it assumes it is a module and attempts
Fred Drake20082d92000-04-03 04:26:58 +00002402to load it. If it fails to find it, an
2403\exception{ImportError} exception is raised.
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002404
2405Contrarily, when using syntax like \code{import
2406\var{item.subitem.subsubitem}}, each item except for the last must be
2407a package; the last item can be a module or a package but can't be a
2408class or function or variable defined in the previous item.
2409
Fred Drakeb7833d31998-09-11 16:21:55 +00002410\subsection{Importing * From a Package \label{pkg-import-star}}
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002411%The \code{__all__} Attribute
2412
2413Now what happens when the user writes \code{from Sound.Effects import
2414*}? Ideally, one would hope that this somehow goes out to the
2415filesystem, finds which submodules are present in the package, and
2416imports them all. Unfortunately, this operation does not work very
2417well on Mac and Windows platforms, where the filesystem does not
2418always have accurate information about the case of a filename! On
2419these platforms, there is no guaranteed way to know whether a file
2420\file{ECHO.PY} should be imported as a module \module{echo},
2421\module{Echo} or \module{ECHO}. (For example, Windows 95 has the
2422annoying practice of showing all file names with a capitalized first
2423letter.) The DOS 8+3 filename restriction adds another interesting
2424problem for long module names.
2425
2426The only solution is for the package author to provide an explicit
2427index of the package. The import statement uses the following
Fred Drake20082d92000-04-03 04:26:58 +00002428convention: if a package's \file{__init__.py} code defines a list
2429named \code{__all__}, it is taken to be the list of module names that
2430should be imported when \code{from \var{package} import *} is
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002431encountered. It is up to the package author to keep this list
2432up-to-date when a new version of the package is released. Package
2433authors may also decide not to support it, if they don't see a use for
2434importing * from their package. For example, the file
Fred Drake20082d92000-04-03 04:26:58 +00002435\file{Sounds/Effects/__init__.py} could contain the following code:
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002436
2437\begin{verbatim}
2438__all__ = ["echo", "surround", "reverse"]
2439\end{verbatim}
2440
2441This would mean that \code{from Sound.Effects import *} would
2442import the three named submodules of the \module{Sound} package.
2443
2444If \code{__all__} is not defined, the statement \code{from Sound.Effects
2445import *} does \emph{not} import all submodules from the package
2446\module{Sound.Effects} into the current namespace; it only ensures that the
2447package \module{Sound.Effects} has been imported (possibly running its
2448initialization code, \file{__init__.py}) and then imports whatever names are
2449defined in the package. This includes any names defined (and
2450submodules explicitly loaded) by \file{__init__.py}. It also includes any
2451submodules of the package that were explicitly loaded by previous
2452import statements, e.g.
2453
2454\begin{verbatim}
2455import Sound.Effects.echo
2456import Sound.Effects.surround
2457from Sound.Effects import *
2458\end{verbatim}
2459
2460
2461In this example, the echo and surround modules are imported in the
Fred Drake20082d92000-04-03 04:26:58 +00002462current namespace because they are defined in the
2463\module{Sound.Effects} package when the \code{from...import} statement
2464is executed. (This also works when \code{__all__} is defined.)
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002465
2466Note that in general the practicing of importing * from a module or
2467package is frowned upon, since it often causes poorly readable code.
2468However, it is okay to use it to save typing in interactive sessions,
2469and certain modules are designed to export only names that follow
2470certain patterns.
2471
2472Remember, there is nothing wrong with using \code{from Package
2473import specific_submodule}! In fact, this is the
2474recommended notation unless the importing module needs to use
2475submodules with the same name from different packages.
2476
2477
2478\subsection{Intra-package References}
2479
2480The submodules often need to refer to each other. For example, the
2481\module{surround} module might use the \module{echo} module. In fact, such references
2482are so common that the \code{import} statement first looks in the
2483containing package before looking in the standard module search path.
2484Thus, the surround module can simply use \code{import echo} or
2485\code{from echo import echofilter}. If the imported module is not
2486found in the current package (the package of which the current module
2487is a submodule), the \code{import} statement looks for a top-level module
2488with the given name.
2489
Fred Drake20082d92000-04-03 04:26:58 +00002490When packages are structured into subpackages (as with the
2491\module{Sound} package in the example), there's no shortcut to refer
2492to submodules of sibling packages - the full name of the subpackage
2493must be used. For example, if the module
2494\module{Sound.Filters.vocoder} needs to use the \module{echo} module
2495in the \module{Sound.Effects} package, it can use \code{from
Andrew M. Kuchling108943c1998-07-01 13:58:55 +00002496Sound.Effects import echo}.
2497
2498%(One could design a notation to refer to parent packages, similar to
2499%the use of ".." to refer to the parent directory in Unix and Windows
2500%filesystems. In fact, the \module{ni} module, which was the
2501%ancestor of this package system, supported this using \code{__} for
2502%the package containing the current module,
2503%\code{__.__} for the parent package, and so on. This feature was dropped
2504%because of its awkwardness; since most packages will have a relative
2505%shallow substructure, this is no big loss.)
2506
2507
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002508
Fred Drakeb7833d31998-09-11 16:21:55 +00002509\chapter{Input and Output \label{io}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002510
Guido van Rossum02455691997-07-17 16:21:52 +00002511There are several ways to present the output of a program; data can be
2512printed in a human-readable form, or written to a file for future use.
2513This chapter will discuss some of the possibilities.
2514
Fred Drakeb7833d31998-09-11 16:21:55 +00002515
2516\section{Fancier Output Formatting \label{formatting}}
2517
Fred Drakeeee08cd1997-12-04 15:43:15 +00002518So far we've encountered two ways of writing values: \emph{expression
Fred Drake8842e861998-02-13 07:16:30 +00002519statements} and the \keyword{print} statement. (A third way is using
2520the \method{write()} method of file objects; the standard output file
2521can be referenced as \code{sys.stdout}. See the Library Reference for
2522more information on this.)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002523
2524Often you'll want more control over the formatting of your output than
Guido van Rossum02455691997-07-17 16:21:52 +00002525simply printing space-separated values. There are two ways to format
2526your output; the first way is to do all the string handling yourself;
2527using string slicing and concatenation operations you can create any
Fred Drake391564f1998-04-01 23:11:56 +00002528lay-out you can imagine. The standard module
2529\module{string}\refstmodindex{string} contains some useful operations
Fred Drake20082d92000-04-03 04:26:58 +00002530for padding strings to a given column width; these will be discussed
2531shortly. The second way is to use the \code{\%} operator with a
2532string as the left argument. The \code{\%} operator interprets the
2533left argument as a C much like a \cfunction{sprintf()}-style format
2534string to be applied to the right argument, and returns the string
2535resulting from this formatting operation.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002536
2537One question remains, of course: how do you convert values to strings?
Guido van Rossum02455691997-07-17 16:21:52 +00002538Luckily, Python has a way to convert any value to a string: pass it to
Fred Drake8842e861998-02-13 07:16:30 +00002539the \function{repr()} function, or just write the value between
2540reverse quotes (\code{``}). Some examples:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002541
Fred Drake8842e861998-02-13 07:16:30 +00002542\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002543>>> x = 10 * 3.14
2544>>> y = 200*200
2545>>> s = 'The value of x is ' + `x` + ', and y is ' + `y` + '...'
2546>>> print s
2547The value of x is 31.4, and y is 40000...
2548>>> # Reverse quotes work on other types besides numbers:
Guido van Rossum6938f061994-08-01 12:22:53 +00002549... p = [x, y]
Guido van Rossum02455691997-07-17 16:21:52 +00002550>>> ps = repr(p)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002551>>> ps
2552'[31.4, 40000]'
2553>>> # Converting a string adds string quotes and backslashes:
Guido van Rossum6938f061994-08-01 12:22:53 +00002554... hello = 'hello, world\n'
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002555>>> hellos = `hello`
2556>>> print hellos
2557'hello, world\012'
2558>>> # The argument of reverse quotes may be a tuple:
Guido van Rossume5f8b601995-01-04 19:12:49 +00002559... `x, y, ('spam', 'eggs')`
2560"(31.4, 40000, ('spam', 'eggs'))"
Fred Drake8842e861998-02-13 07:16:30 +00002561\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002562
Guido van Rossum6938f061994-08-01 12:22:53 +00002563Here are two ways to write a table of squares and cubes:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002564
Fred Drake8842e861998-02-13 07:16:30 +00002565\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002566>>> import string
2567>>> for x in range(1, 11):
2568... print string.rjust(`x`, 2), string.rjust(`x*x`, 3),
2569... # Note trailing comma on previous line
2570... print string.rjust(`x*x*x`, 4)
2571...
2572 1 1 1
2573 2 4 8
2574 3 9 27
2575 4 16 64
2576 5 25 125
2577 6 36 216
2578 7 49 343
2579 8 64 512
2580 9 81 729
258110 100 1000
Guido van Rossum6938f061994-08-01 12:22:53 +00002582>>> for x in range(1,11):
2583... print '%2d %3d %4d' % (x, x*x, x*x*x)
2584...
2585 1 1 1
2586 2 4 8
2587 3 9 27
2588 4 16 64
2589 5 25 125
2590 6 36 216
2591 7 49 343
2592 8 64 512
2593 9 81 729
259410 100 1000
Fred Drake8842e861998-02-13 07:16:30 +00002595\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002596
Fred Drake8842e861998-02-13 07:16:30 +00002597(Note that one space between each column was added by the way
2598\keyword{print} works: it always adds spaces between its arguments.)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002599
Fred Drake8842e861998-02-13 07:16:30 +00002600This example demonstrates the function \function{string.rjust()},
2601which right-justifies a string in a field of a given width by padding
2602it with spaces on the left. There are similar functions
2603\function{string.ljust()} and \function{string.center()}. These
2604functions do not write anything, they just return a new string. If
2605the input string is too long, they don't truncate it, but return it
2606unchanged; this will mess up your column lay-out but that's usually
2607better than the alternative, which would be lying about a value. (If
2608you really want truncation you can always add a slice operation, as in
2609\samp{string.ljust(x,~n)[0:n]}.)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002610
Fred Drake8842e861998-02-13 07:16:30 +00002611There is another function, \function{string.zfill()}, which pads a
2612numeric string on the left with zeros. It understands about plus and
2613minus signs:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002614
Fred Drake8842e861998-02-13 07:16:30 +00002615\begin{verbatim}
Fred Drake0ba58151999-09-14 18:00:49 +00002616>>> import string
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002617>>> string.zfill('12', 5)
2618'00012'
2619>>> string.zfill('-3.14', 7)
2620'-003.14'
2621>>> string.zfill('3.14159265359', 5)
2622'3.14159265359'
Fred Drake8842e861998-02-13 07:16:30 +00002623\end{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002624%
2625Using the \code{\%} operator looks like this:
2626
2627\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00002628>>> import math
2629>>> print 'The value of PI is approximately %5.3f.' % math.pi
2630The value of PI is approximately 3.142.
Guido van Rossum02455691997-07-17 16:21:52 +00002631\end{verbatim}
2632
2633If there is more than one format in the string you pass a tuple as
2634right operand, e.g.
2635
2636\begin{verbatim}
Fred Drake20082d92000-04-03 04:26:58 +00002637>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
Fred Drake8842e861998-02-13 07:16:30 +00002638>>> for name, phone in table.items():
2639... print '%-10s ==> %10d' % (name, phone)
2640...
2641Jack ==> 4098
Fred Drake69fbf332000-04-04 19:53:06 +00002642Dcab ==> 7678
Fred Drake8842e861998-02-13 07:16:30 +00002643Sjoerd ==> 4127
Guido van Rossum02455691997-07-17 16:21:52 +00002644\end{verbatim}
2645
Fred Drakeee84d591999-03-10 17:25:30 +00002646Most formats work exactly as in C and require that you pass the proper
Guido van Rossum02455691997-07-17 16:21:52 +00002647type; however, if you don't you get an exception, not a core dump.
Fred Drakedb70d061998-11-17 21:59:04 +00002648The \code{\%s} format is more relaxed: if the corresponding argument is
Fred Drake8842e861998-02-13 07:16:30 +00002649not a string object, it is converted to string using the
2650\function{str()} built-in function. Using \code{*} to pass the width
2651or precision in as a separate (integer) argument is supported. The
Fred Drakeee84d591999-03-10 17:25:30 +00002652C formats \code{\%n} and \code{\%p} are not supported.
Guido van Rossum02455691997-07-17 16:21:52 +00002653
2654If you have a really long format string that you don't want to split
2655up, it would be nice if you could reference the variables to be
2656formatted by name instead of by position. This can be done by using
Fred Drakeee84d591999-03-10 17:25:30 +00002657an extension of C formats using the form \code{\%(name)format}, e.g.
Guido van Rossum02455691997-07-17 16:21:52 +00002658
2659\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00002660>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
2661>>> print 'Jack: %(Jack)d; Sjoerd: %(Sjoerd)d; Dcab: %(Dcab)d' % table
2662Jack: 4098; Sjoerd: 4127; Dcab: 8637678
Guido van Rossum02455691997-07-17 16:21:52 +00002663\end{verbatim}
2664
2665This is particularly useful in combination with the new built-in
Fred Drake8842e861998-02-13 07:16:30 +00002666\function{vars()} function, which returns a dictionary containing all
Guido van Rossum02455691997-07-17 16:21:52 +00002667local variables.
2668
Fred Drakeb7833d31998-09-11 16:21:55 +00002669\section{Reading and Writing Files \label{files}}
Fred Drake6c2176e1998-02-26 21:47:54 +00002670
Guido van Rossum02455691997-07-17 16:21:52 +00002671% Opening files
Fred Drake391564f1998-04-01 23:11:56 +00002672\function{open()}\bifuncindex{open} returns a file
2673object\obindex{file}, and is most commonly used with two arguments:
2674\samp{open(\var{filename}, \var{mode})}.
Guido van Rossum02455691997-07-17 16:21:52 +00002675
Fred Drake8842e861998-02-13 07:16:30 +00002676\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002677>>> f=open('/tmp/workfile', 'w')
2678>>> print f
2679<open file '/tmp/workfile', mode 'w' at 80a0960>
Fred Drake8842e861998-02-13 07:16:30 +00002680\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002681
Guido van Rossum02455691997-07-17 16:21:52 +00002682The first argument is a string containing the filename. The second
2683argument is another string containing a few characters describing the
2684way in which the file will be used. \var{mode} can be \code{'r'} when
2685the file will only be read, \code{'w'} for only writing (an existing
2686file with the same name will be erased), and \code{'a'} opens the file
2687for appending; any data written to the file is automatically added to
2688the end. \code{'r+'} opens the file for both reading and writing.
2689The \var{mode} argument is optional; \code{'r'} will be assumed if
2690it's omitted.
2691
Fred Drake391564f1998-04-01 23:11:56 +00002692On Windows and the Macintosh, \code{'b'} appended to the
Guido van Rossum02455691997-07-17 16:21:52 +00002693mode opens the file in binary mode, so there are also modes like
2694\code{'rb'}, \code{'wb'}, and \code{'r+b'}. Windows makes a
2695distinction between text and binary files; the end-of-line characters
2696in text files are automatically altered slightly when data is read or
2697written. This behind-the-scenes modification to file data is fine for
Fred Drake8842e861998-02-13 07:16:30 +00002698\ASCII{} text files, but it'll corrupt binary data like that in JPEGs or
2699\file{.EXE} files. Be very careful to use binary mode when reading and
Fred Drake391564f1998-04-01 23:11:56 +00002700writing such files. (Note that the precise semantics of text mode on
Fred Drakeee84d591999-03-10 17:25:30 +00002701the Macintosh depends on the underlying C library being used.)
Guido van Rossum02455691997-07-17 16:21:52 +00002702
Fred Drakeb7833d31998-09-11 16:21:55 +00002703\subsection{Methods of File Objects \label{fileMethods}}
Guido van Rossum02455691997-07-17 16:21:52 +00002704
2705The rest of the examples in this section will assume that a file
2706object called \code{f} has already been created.
2707
2708To read a file's contents, call \code{f.read(\var{size})}, which reads
2709some quantity of data and returns it as a string. \var{size} is an
2710optional numeric argument. When \var{size} is omitted or negative,
2711the entire contents of the file will be read and returned; it's your
2712problem if the file is twice as large as your machine's memory.
2713Otherwise, at most \var{size} bytes are read and returned. If the end
2714of the file has been reached, \code{f.read()} will return an empty
2715string (\code {""}).
Fred Drake8842e861998-02-13 07:16:30 +00002716\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002717>>> f.read()
2718'This is the entire file.\012'
2719>>> f.read()
2720''
Fred Drake8842e861998-02-13 07:16:30 +00002721\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002722
Guido van Rossum02455691997-07-17 16:21:52 +00002723\code{f.readline()} reads a single line from the file; a newline
Fred Drake8842e861998-02-13 07:16:30 +00002724character (\code{\e n}) is left at the end of the string, and is only
Guido van Rossum02455691997-07-17 16:21:52 +00002725omitted on the last line of the file if the file doesn't end in a
2726newline. This makes the return value unambiguous; if
2727\code{f.readline()} returns an empty string, the end of the file has
Fred Drake8842e861998-02-13 07:16:30 +00002728been reached, while a blank line is represented by \code{'\e n'}, a
Guido van Rossum02455691997-07-17 16:21:52 +00002729string containing only a single newline.
2730
Fred Drake8842e861998-02-13 07:16:30 +00002731\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002732>>> f.readline()
2733'This is the first line of the file.\012'
2734>>> f.readline()
2735'Second line of the file\012'
2736>>> f.readline()
2737''
Fred Drake8842e861998-02-13 07:16:30 +00002738\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002739
Fred Drakeeee08cd1997-12-04 15:43:15 +00002740\code{f.readlines()} uses \code{f.readline()} repeatedly, and returns
Guido van Rossum02455691997-07-17 16:21:52 +00002741a list containing all the lines of data in the file.
2742
Fred Drake8842e861998-02-13 07:16:30 +00002743\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002744>>> f.readlines()
2745['This is the first line of the file.\012', 'Second line of the file\012']
Fred Drake8842e861998-02-13 07:16:30 +00002746\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002747
Guido van Rossum02455691997-07-17 16:21:52 +00002748\code{f.write(\var{string})} writes the contents of \var{string} to
2749the file, returning \code{None}.
2750
Fred Drake8842e861998-02-13 07:16:30 +00002751\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002752>>> f.write('This is a test\n')
Fred Drake8842e861998-02-13 07:16:30 +00002753\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002754
Guido van Rossum02455691997-07-17 16:21:52 +00002755\code{f.tell()} returns an integer giving the file object's current
2756position in the file, measured in bytes from the beginning of the
2757file. To change the file object's position, use
Fred Drake8842e861998-02-13 07:16:30 +00002758\samp{f.seek(\var{offset}, \var{from_what})}. The position is
Guido van Rossum02455691997-07-17 16:21:52 +00002759computed from adding \var{offset} to a reference point; the reference
Fred Drake20082d92000-04-03 04:26:58 +00002760point is selected by the \var{from_what} argument. A
2761\var{from_what} value of 0 measures from the beginning of the file, 1
2762uses the current file position, and 2 uses the end of the file as the
2763reference point. \var{from_what} can be omitted and defaults to 0,
2764using the beginning of the file as the reference point.
Guido van Rossum02455691997-07-17 16:21:52 +00002765
Fred Drake8842e861998-02-13 07:16:30 +00002766\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002767>>> f=open('/tmp/workfile', 'r+')
2768>>> f.write('0123456789abcdef')
2769>>> f.seek(5) # Go to the 5th byte in the file
2770>>> f.read(1)
2771'5'
2772>>> f.seek(-3, 2) # Go to the 3rd byte before the end
2773>>> f.read(1)
2774'd'
Fred Drake8842e861998-02-13 07:16:30 +00002775\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002776
Guido van Rossum02455691997-07-17 16:21:52 +00002777When you're done with a file, call \code{f.close()} to close it and
2778free up any system resources taken up by the open file. After calling
2779\code{f.close()}, attempts to use the file object will automatically fail.
2780
Fred Drake8842e861998-02-13 07:16:30 +00002781\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002782>>> f.close()
2783>>> f.read()
2784Traceback (innermost last):
2785 File "<stdin>", line 1, in ?
2786ValueError: I/O operation on closed file
Fred Drake8842e861998-02-13 07:16:30 +00002787\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002788
Fred Drake20082d92000-04-03 04:26:58 +00002789File objects have some additional methods, such as
2790\method{isatty()} and \method{truncate()} which are less frequently
2791used; consult the Library Reference for a complete guide to file
2792objects.
Guido van Rossum02455691997-07-17 16:21:52 +00002793
Fred Drakeb7833d31998-09-11 16:21:55 +00002794\subsection{The \module{pickle} Module \label{pickle}}
Fred Drake391564f1998-04-01 23:11:56 +00002795\refstmodindex{pickle}
Guido van Rossum02455691997-07-17 16:21:52 +00002796
2797Strings can easily be written to and read from a file. Numbers take a
Fred Drake8842e861998-02-13 07:16:30 +00002798bit more effort, since the \method{read()} method only returns
2799strings, which will have to be passed to a function like
2800\function{string.atoi()}, which takes a string like \code{'123'} and
2801returns its numeric value 123. However, when you want to save more
2802complex data types like lists, dictionaries, or class instances,
2803things get a lot more complicated.
Guido van Rossum02455691997-07-17 16:21:52 +00002804
2805Rather than have users be constantly writing and debugging code to
2806save complicated data types, Python provides a standard module called
Fred Drake8842e861998-02-13 07:16:30 +00002807\module{pickle}. This is an amazing module that can take almost
Guido van Rossum02455691997-07-17 16:21:52 +00002808any Python object (even some forms of Python code!), and convert it to
2809a string representation; this process is called \dfn{pickling}.
2810Reconstructing the object from the string representation is called
2811\dfn{unpickling}. Between pickling and unpickling, the string
2812representing the object may have been stored in a file or data, or
2813sent over a network connection to some distant machine.
2814
2815If you have an object \code{x}, and a file object \code{f} that's been
2816opened for writing, the simplest way to pickle the object takes only
2817one line of code:
2818
Fred Drake8842e861998-02-13 07:16:30 +00002819\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002820pickle.dump(x, f)
Fred Drake8842e861998-02-13 07:16:30 +00002821\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002822
Fred Drake8842e861998-02-13 07:16:30 +00002823To unpickle the object again, if \code{f} is a file object which has
2824been opened for reading:
Guido van Rossum02455691997-07-17 16:21:52 +00002825
Fred Drake8842e861998-02-13 07:16:30 +00002826\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00002827x = pickle.load(f)
Fred Drake8842e861998-02-13 07:16:30 +00002828\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002829
Guido van Rossum02455691997-07-17 16:21:52 +00002830(There are other variants of this, used when pickling many objects or
2831when you don't want to write the pickled data to a file; consult the
Fred Drake8842e861998-02-13 07:16:30 +00002832complete documentation for \module{pickle} in the Library Reference.)
Guido van Rossum02455691997-07-17 16:21:52 +00002833
Fred Drake20082d92000-04-03 04:26:58 +00002834\module{pickle} is the standard way to make Python objects which can
2835be stored and reused by other programs or by a future invocation of
2836the same program; the technical term for this is a
2837\dfn{persistent} object. Because \module{pickle} is so widely used,
2838many authors who write Python extensions take care to ensure that new
2839data types such as matrices can be properly pickled and unpickled.
Guido van Rossum02455691997-07-17 16:21:52 +00002840
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002841
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002842
Fred Drakeb7833d31998-09-11 16:21:55 +00002843\chapter{Errors and Exceptions \label{errors}}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002844
2845Until now error messages haven't been more than mentioned, but if you
2846have tried out the examples you have probably seen some. There are
Fred Drake20082d92000-04-03 04:26:58 +00002847(at least) two distinguishable kinds of errors:
2848\emph{syntax errors} and \emph{exceptions}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002849
Fred Drakeb7833d31998-09-11 16:21:55 +00002850\section{Syntax Errors \label{syntaxErrors}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002851
2852Syntax errors, also known as parsing errors, are perhaps the most common
Guido van Rossum4410c751991-06-04 20:22:18 +00002853kind of complaint you get while you are still learning Python:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002854
Fred Drake8842e861998-02-13 07:16:30 +00002855\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002856>>> while 1 print 'Hello world'
Guido van Rossum6938f061994-08-01 12:22:53 +00002857 File "<stdin>", line 1
2858 while 1 print 'Hello world'
2859 ^
2860SyntaxError: invalid syntax
Fred Drake8842e861998-02-13 07:16:30 +00002861\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002862
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002863The parser repeats the offending line and displays a little `arrow'
Fred Drake20082d92000-04-03 04:26:58 +00002864pointing at the earliest point in the line where the error was
2865detected. The error is caused by (or at least detected at) the token
2866\emph{preceding} the arrow: in the example, the error is detected at
2867the keyword \keyword{print}, since a colon (\character{:}) is missing
2868before it. File name and line number are printed so you know where to
2869look in case the input came from a script.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002870
Fred Drakeb7833d31998-09-11 16:21:55 +00002871\section{Exceptions \label{exceptions}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002872
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002873Even if a statement or expression is syntactically correct, it may
2874cause an error when an attempt is made to execute it.
Fred Drakeeee08cd1997-12-04 15:43:15 +00002875Errors detected during execution are called \emph{exceptions} and are
Guido van Rossum6fc178f1991-08-16 09:13:42 +00002876not unconditionally fatal: you will soon learn how to handle them in
2877Python programs. Most exceptions are not handled by programs,
2878however, and result in error messages as shown here:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002879
Fred Drake8842e861998-02-13 07:16:30 +00002880\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002881>>> 10 * (1/0)
Guido van Rossum3cbc16d1993-12-17 12:13:53 +00002882Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00002883 File "<stdin>", line 1
Guido van Rossumb2c65561993-05-12 08:53:36 +00002884ZeroDivisionError: integer division or modulo
Guido van Rossume5f8b601995-01-04 19:12:49 +00002885>>> 4 + spam*3
Guido van Rossum6938f061994-08-01 12:22:53 +00002886Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00002887 File "<stdin>", line 1
Guido van Rossume5f8b601995-01-04 19:12:49 +00002888NameError: spam
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002889>>> '2' + 2
Guido van Rossum6938f061994-08-01 12:22:53 +00002890Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00002891 File "<stdin>", line 1
Guido van Rossumb2c65561993-05-12 08:53:36 +00002892TypeError: illegal argument type for built-in operation
Fred Drake8842e861998-02-13 07:16:30 +00002893\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002894
Guido van Rossumb2c65561993-05-12 08:53:36 +00002895The last line of the error message indicates what happened.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002896Exceptions come in different types, and the type is printed as part of
2897the message: the types in the example are
Fred Drake20082d92000-04-03 04:26:58 +00002898\exception{ZeroDivisionError}, \exception{NameError} and
Fred Drake8842e861998-02-13 07:16:30 +00002899\exception{TypeError}.
Guido van Rossumb2c65561993-05-12 08:53:36 +00002900The string printed as the exception type is the name of the built-in
2901name for the exception that occurred. This is true for all built-in
2902exceptions, but need not be true for user-defined exceptions (although
2903it is a useful convention).
2904Standard exception names are built-in identifiers (not reserved
2905keywords).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002906
Guido van Rossumb2c65561993-05-12 08:53:36 +00002907The rest of the line is a detail whose interpretation depends on the
2908exception type; its meaning is dependent on the exception type.
2909
2910The preceding part of the error message shows the context where the
2911exception happened, in the form of a stack backtrace.
Guido van Rossum2292b8e1991-01-23 16:31:24 +00002912In general it contains a stack backtrace listing source lines; however,
2913it will not display lines read from standard input.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002914
Fred Drake20082d92000-04-03 04:26:58 +00002915The \emph{Python Library Reference} lists the built-in exceptions and
2916their meanings.
2917
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002918
Fred Drakeb7833d31998-09-11 16:21:55 +00002919\section{Handling Exceptions \label{handling}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002920
2921It is possible to write programs that handle selected exceptions.
Fred Drake20082d92000-04-03 04:26:58 +00002922Look at the following example, which asks the user for input until a
2923valid integer has been entered, but allows the user to interrupt the
2924program (using \kbd{Control-C} or whatever the operating system
2925supports); note that a user-generated interruption is signalled by
2926raising the \exception{KeyboardInterrupt} exception.
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002927
Fred Drake8842e861998-02-13 07:16:30 +00002928\begin{verbatim}
Fred Drake20082d92000-04-03 04:26:58 +00002929>>> while 1:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002930... try:
Fred Drake20082d92000-04-03 04:26:58 +00002931... x = int(raw_input("Please enter a number: "))
2932... break
2933... except ValueError:
2934... print "Oops! That was no valid number. Try again..."
Guido van Rossum02455691997-07-17 16:21:52 +00002935...
Fred Drake8842e861998-02-13 07:16:30 +00002936\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002937
Fred Drake8842e861998-02-13 07:16:30 +00002938The \keyword{try} statement works as follows.
Fred Drake20082d92000-04-03 04:26:58 +00002939
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002940\begin{itemize}
2941\item
Fred Drake20082d92000-04-03 04:26:58 +00002942First, the \emph{try clause} (the statement(s) between the
2943\keyword{try} and \keyword{except} keywords) is executed.
2944
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002945\item
Fred Drake20082d92000-04-03 04:26:58 +00002946If no exception occurs, the \emph{except\ clause} is skipped and
2947execution of the \keyword{try} statement is finished.
2948
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002949\item
Fred Drake20082d92000-04-03 04:26:58 +00002950If an exception occurs during execution of the try clause, the rest of
2951the clause is skipped. Then if its type matches the exception named
2952after the \keyword{except} keyword, the rest of the try clause is
2953skipped, the except clause is executed, and then execution continues
2954after the \keyword{try} statement.
2955
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002956\item
2957If an exception occurs which does not match the exception named in the
Fred Drake8842e861998-02-13 07:16:30 +00002958except clause, it is passed on to outer \keyword{try} statements; if
Fred Drake20082d92000-04-03 04:26:58 +00002959no handler is found, it is an \emph{unhandled exception} and execution
2960stops with a message as shown above.
2961
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002962\end{itemize}
Fred Drake20082d92000-04-03 04:26:58 +00002963
Fred Drake8842e861998-02-13 07:16:30 +00002964A \keyword{try} statement may have more than one except clause, to
Fred Drake20082d92000-04-03 04:26:58 +00002965specify handlers for different exceptions. At most one handler will
2966be executed. Handlers only handle exceptions that occur in the
2967corresponding try clause, not in other handlers of the same
2968\keyword{try} statement. An except clause may name multiple exceptions
2969as a parenthesized list, e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002970
Fred Drake8842e861998-02-13 07:16:30 +00002971\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002972... except (RuntimeError, TypeError, NameError):
2973... pass
Fred Drake8842e861998-02-13 07:16:30 +00002974\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00002975
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002976The last except clause may omit the exception name(s), to serve as a
Fred Drake20082d92000-04-03 04:26:58 +00002977wildcard. Use this with extreme caution, since it is easy to mask a
2978real programming error in this way! It can also be used to print an
2979error message and then re-raise the exception (allowing a caller to
2980handle the exception as well):
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002981
Fred Drake20082d92000-04-03 04:26:58 +00002982\begin{verbatim}
2983import string, sys
2984
2985try:
2986 f = open('myfile.txt')
2987 s = f.readline()
2988 i = int(string.strip(s))
2989except IOError, (errno, strerror):
2990 print "I/O error(%s): %s" % (errno, strerror)
2991except ValueError:
2992 print "Could not convert data to an integer."
2993except:
2994 print "Unexpected error:", sys.exc_info()[0]
2995 raise
2996\end{verbatim}
Fred Drake2900ff91999-08-24 22:14:57 +00002997
Fred Drake8842e861998-02-13 07:16:30 +00002998The \keyword{try} \ldots\ \keyword{except} statement has an optional
Fred Drakee99d1db2000-04-17 14:56:31 +00002999\emph{else clause}, which, when present, must follow all except
3000clauses. It is useful for code that must be executed if the try
3001clause does not raise an exception. For example:
Guido van Rossum02455691997-07-17 16:21:52 +00003002
3003\begin{verbatim}
Guido van Rossuma4289a71998-07-07 20:18:06 +00003004for arg in sys.argv[1:]:
Fred Drake8842e861998-02-13 07:16:30 +00003005 try:
3006 f = open(arg, 'r')
3007 except IOError:
3008 print 'cannot open', arg
3009 else:
3010 print arg, 'has', len(f.readlines()), 'lines'
3011 f.close()
Guido van Rossum02455691997-07-17 16:21:52 +00003012\end{verbatim}
3013
Fred Drakee99d1db2000-04-17 14:56:31 +00003014The use of the \keyword{else} clause is better than adding additional
3015code to the \keyword{try} clause because it avoids accidentally
3016catching an exception that wasn't raised by the code being protected
3017by the \keyword{try} \ldots\ \keyword{except} statement.
3018
Guido van Rossum02455691997-07-17 16:21:52 +00003019
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003020When an exception occurs, it may have an associated value, also known as
Fred Drake8842e861998-02-13 07:16:30 +00003021the exceptions's \emph{argument}.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003022The presence and type of the argument depend on the exception type.
3023For exception types which have an argument, the except clause may
3024specify a variable after the exception name (or list) to receive the
3025argument's value, as follows:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00003026
Fred Drake8842e861998-02-13 07:16:30 +00003027\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003028>>> try:
Guido van Rossume5f8b601995-01-04 19:12:49 +00003029... spam()
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003030... except NameError, x:
Guido van Rossum2292b8e1991-01-23 16:31:24 +00003031... print 'name', x, 'undefined'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003032...
Guido van Rossume5f8b601995-01-04 19:12:49 +00003033name spam undefined
Fred Drake8842e861998-02-13 07:16:30 +00003034\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00003035
Guido van Rossumb2c65561993-05-12 08:53:36 +00003036If an exception has an argument, it is printed as the last part
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003037(`detail') of the message for unhandled exceptions.
3038
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003039Exception handlers don't just handle exceptions if they occur
3040immediately in the try clause, but also if they occur inside functions
3041that are called (even indirectly) in the try clause.
3042For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00003043
Fred Drake8842e861998-02-13 07:16:30 +00003044\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003045>>> def this_fails():
3046... x = 1/0
3047...
3048>>> try:
3049... this_fails()
Guido van Rossumb2c65561993-05-12 08:53:36 +00003050... except ZeroDivisionError, detail:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003051... print 'Handling run-time error:', detail
3052...
Guido van Rossumb2c65561993-05-12 08:53:36 +00003053Handling run-time error: integer division or modulo
Fred Drake8842e861998-02-13 07:16:30 +00003054\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00003055
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003056
Fred Drakeb7833d31998-09-11 16:21:55 +00003057\section{Raising Exceptions \label{raising}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003058
Fred Drake8842e861998-02-13 07:16:30 +00003059The \keyword{raise} statement allows the programmer to force a
3060specified exception to occur.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003061For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00003062
Fred Drake8842e861998-02-13 07:16:30 +00003063\begin{verbatim}
Guido van Rossumb2c65561993-05-12 08:53:36 +00003064>>> raise NameError, 'HiThere'
Guido van Rossum6938f061994-08-01 12:22:53 +00003065Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00003066 File "<stdin>", line 1
Guido van Rossumb2c65561993-05-12 08:53:36 +00003067NameError: HiThere
Fred Drake8842e861998-02-13 07:16:30 +00003068\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00003069
Fred Drake8842e861998-02-13 07:16:30 +00003070The first argument to \keyword{raise} names the exception to be
3071raised. The optional second argument specifies the exception's
3072argument.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003073
Guido van Rossum02455691997-07-17 16:21:52 +00003074
Fred Drakeb7833d31998-09-11 16:21:55 +00003075\section{User-defined Exceptions \label{userExceptions}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003076
3077Programs may name their own exceptions by assigning a string to a
Fred Drake20082d92000-04-03 04:26:58 +00003078variable or creating a new exception class. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00003079
Fred Drake8842e861998-02-13 07:16:30 +00003080\begin{verbatim}
Fred Drake20082d92000-04-03 04:26:58 +00003081>>> class MyError:
3082... def __init__(self, value):
3083... self.value = value
3084... def __str__(self):
3085... return `self.value`
3086...
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003087>>> try:
Fred Drake20082d92000-04-03 04:26:58 +00003088... raise MyError(2*2)
3089... except MyError, e:
3090... print 'My exception occurred, value:', e.value
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003091...
Guido van Rossum6938f061994-08-01 12:22:53 +00003092My exception occurred, value: 4
Fred Drake20082d92000-04-03 04:26:58 +00003093>>> raise MyError, 1
Guido van Rossum6938f061994-08-01 12:22:53 +00003094Traceback (innermost last):
3095 File "<stdin>", line 1
Fred Drake20082d92000-04-03 04:26:58 +00003096__main__.MyError: 1
Fred Drake8842e861998-02-13 07:16:30 +00003097\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00003098
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003099Many standard modules use this to report errors that may occur in
3100functions they define.
3101
Fred Drake20082d92000-04-03 04:26:58 +00003102More information on classes is presented in chapter \ref{classes},
3103``Classes.''
3104
Guido van Rossum02455691997-07-17 16:21:52 +00003105
Fred Drakeb7833d31998-09-11 16:21:55 +00003106\section{Defining Clean-up Actions \label{cleanup}}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003107
Fred Drake8842e861998-02-13 07:16:30 +00003108The \keyword{try} statement has another optional clause which is
3109intended to define clean-up actions that must be executed under all
3110circumstances. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00003111
Fred Drake8842e861998-02-13 07:16:30 +00003112\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003113>>> try:
3114... raise KeyboardInterrupt
3115... finally:
3116... print 'Goodbye, world!'
3117...
3118Goodbye, world!
Guido van Rossum6938f061994-08-01 12:22:53 +00003119Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00003120 File "<stdin>", line 2
Guido van Rossumb2c65561993-05-12 08:53:36 +00003121KeyboardInterrupt
Fred Drake8842e861998-02-13 07:16:30 +00003122\end{verbatim}
Fred Drake6c2176e1998-02-26 21:47:54 +00003123
Fred Drake8842e861998-02-13 07:16:30 +00003124A \emph{finally clause} is executed whether or not an exception has
3125occurred in the try clause. When an exception has occurred, it is
3126re-raised after the finally clause is executed. The finally clause is
3127also executed ``on the way out'' when the \keyword{try} statement is
3128left via a \keyword{break} or \keyword{return} statement.
Guido van Rossumda8c3fd1992-08-09 13:55:25 +00003129
Fred Drake8842e861998-02-13 07:16:30 +00003130A \keyword{try} statement must either have one or more except clauses
3131or one finally clause, but not both.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003132
Fred Drakeb7833d31998-09-11 16:21:55 +00003133\chapter{Classes \label{classes}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003134
3135Python's class mechanism adds classes to the language with a minimum
3136of new syntax and semantics. It is a mixture of the class mechanisms
Guido van Rossum16d6e711994-08-08 12:30:22 +00003137found in \Cpp{} and Modula-3. As is true for modules, classes in Python
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003138do not put an absolute barrier between definition and user, but rather
3139rely on the politeness of the user not to ``break into the
3140definition.'' The most important features of classes are retained
3141with full power, however: the class inheritance mechanism allows
3142multiple base classes, a derived class can override any methods of its
Fred Drake391564f1998-04-01 23:11:56 +00003143base class or classes, a method can call the method of a base class with the
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003144same name. Objects can contain an arbitrary amount of private data.
3145
Guido van Rossum16d6e711994-08-08 12:30:22 +00003146In \Cpp{} terminology, all class members (including the data members) are
Fred Drakeeee08cd1997-12-04 15:43:15 +00003147\emph{public}, and all member functions are \emph{virtual}. There are
Guido van Rossum6938f061994-08-01 12:22:53 +00003148no special constructors or destructors. As in Modula-3, there are no
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003149shorthands for referencing the object's members from its methods: the
3150method function is declared with an explicit first argument
3151representing the object, which is provided implicitly by the call. As
3152in Smalltalk, classes themselves are objects, albeit in the wider
3153sense of the word: in Python, all data types are objects. This
Fred Drake20082d92000-04-03 04:26:58 +00003154provides semantics for importing and renaming. But, just like in
3155\Cpp{} or Modula-3, built-in types cannot be used as base classes for
Guido van Rossum16d6e711994-08-08 12:30:22 +00003156extension by the user. Also, like in \Cpp{} but unlike in Modula-3, most
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003157built-in operators with special syntax (arithmetic operators,
Fred Drake391564f1998-04-01 23:11:56 +00003158subscripting etc.) can be redefined for class instances.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003159
Fred Drakeb7833d31998-09-11 16:21:55 +00003160\section{A Word About Terminology \label{terminology}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003161
Fred Drake391564f1998-04-01 23:11:56 +00003162Lacking universally accepted terminology to talk about classes, I will
3163make occasional use of Smalltalk and \Cpp{} terms. (I would use Modula-3
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003164terms, since its object-oriented semantics are closer to those of
Fred Drake8842e861998-02-13 07:16:30 +00003165Python than \Cpp{}, but I expect that few readers have heard of it.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003166
3167I also have to warn you that there's a terminological pitfall for
3168object-oriented readers: the word ``object'' in Python does not
Fred Drake8842e861998-02-13 07:16:30 +00003169necessarily mean a class instance. Like \Cpp{} and Modula-3, and
3170unlike Smalltalk, not all types in Python are classes: the basic
Fred Drake391564f1998-04-01 23:11:56 +00003171built-in types like integers and lists are not, and even somewhat more
Fred Drake8842e861998-02-13 07:16:30 +00003172exotic types like files aren't. However, \emph{all} Python types
3173share a little bit of common semantics that is best described by using
3174the word object.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003175
3176Objects have individuality, and multiple names (in multiple scopes)
3177can be bound to the same object. This is known as aliasing in other
3178languages. This is usually not appreciated on a first glance at
3179Python, and can be safely ignored when dealing with immutable basic
3180types (numbers, strings, tuples). However, aliasing has an
Guido van Rossum6938f061994-08-01 12:22:53 +00003181(intended!) effect on the semantics of Python code involving mutable
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003182objects such as lists, dictionaries, and most types representing
3183entities outside the program (files, windows, etc.). This is usually
3184used to the benefit of the program, since aliases behave like pointers
3185in some respects. For example, passing an object is cheap since only
3186a pointer is passed by the implementation; and if a function modifies
3187an object passed as an argument, the caller will see the change --- this
3188obviates the need for two different argument passing mechanisms as in
3189Pascal.
3190
3191
Fred Drakeb7833d31998-09-11 16:21:55 +00003192\section{Python Scopes and Name Spaces \label{scopes}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003193
3194Before introducing classes, I first have to tell you something about
3195Python's scope rules. Class definitions play some neat tricks with
3196name spaces, and you need to know how scopes and name spaces work to
3197fully understand what's going on. Incidentally, knowledge about this
3198subject is useful for any advanced Python programmer.
3199
3200Let's begin with some definitions.
3201
Fred Drakeeee08cd1997-12-04 15:43:15 +00003202A \emph{name space} is a mapping from names to objects. Most name
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003203spaces are currently implemented as Python dictionaries, but that's
3204normally not noticeable in any way (except for performance), and it
3205may change in the future. Examples of name spaces are: the set of
Fred Drake8842e861998-02-13 07:16:30 +00003206built-in names (functions such as \function{abs()}, and built-in exception
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003207names); the global names in a module; and the local names in a
3208function invocation. In a sense the set of attributes of an object
Guido van Rossum16cd7f91994-10-06 10:29:26 +00003209also form a name space. The important thing to know about name
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003210spaces is that there is absolutely no relation between names in
3211different name spaces; for instance, two different modules may both
3212define a function ``maximize'' without confusion --- users of the
3213modules must prefix it with the module name.
3214
Fred Drakeeee08cd1997-12-04 15:43:15 +00003215By the way, I use the word \emph{attribute} for any name following a
Fred Drake8842e861998-02-13 07:16:30 +00003216dot --- for example, in the expression \code{z.real}, \code{real} is
3217an attribute of the object \code{z}. Strictly speaking, references to
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003218names in modules are attribute references: in the expression
Fred Drake8842e861998-02-13 07:16:30 +00003219\code{modname.funcname}, \code{modname} is a module object and
3220\code{funcname} is an attribute of it. In this case there happens to
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003221be a straightforward mapping between the module's attributes and the
Fred Drake93aa0f21999-04-05 21:39:17 +00003222global names defined in the module: they share the same name
3223space!\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +00003224 Except for one thing. Module objects have a secret read-only
Fred Drakeeee08cd1997-12-04 15:43:15 +00003225 attribute called \code{__dict__} which returns the dictionary
Guido van Rossum6938f061994-08-01 12:22:53 +00003226 used to implement the module's name space; the name
Fred Drakeeee08cd1997-12-04 15:43:15 +00003227 \code{__dict__} is an attribute but not a global name.
Guido van Rossum6938f061994-08-01 12:22:53 +00003228 Obviously, using this violates the abstraction of name space
3229 implementation, and should be restricted to things like
Fred Drake8842e861998-02-13 07:16:30 +00003230 post-mortem debuggers.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003231}
3232
3233Attributes may be read-only or writable. In the latter case,
3234assignment to attributes is possible. Module attributes are writable:
Fred Drake8842e861998-02-13 07:16:30 +00003235you can write \samp{modname.the_answer = 42}. Writable attributes may
Fred Drake391564f1998-04-01 23:11:56 +00003236also be deleted with the \keyword{del} statement, e.g.
Fred Drake8842e861998-02-13 07:16:30 +00003237\samp{del modname.the_answer}.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003238
3239Name spaces are created at different moments and have different
3240lifetimes. The name space containing the built-in names is created
3241when the Python interpreter starts up, and is never deleted. The
3242global name space for a module is created when the module definition
3243is read in; normally, module name spaces also last until the
3244interpreter quits. The statements executed by the top-level
3245invocation of the interpreter, either read from a script file or
Fred Drake8842e861998-02-13 07:16:30 +00003246interactively, are considered part of a module called
3247\module{__main__}, so they have their own global name space. (The
3248built-in names actually also live in a module; this is called
3249\module{__builtin__}.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003250
3251The local name space for a function is created when the function is
3252called, and deleted when the function returns or raises an exception
3253that is not handled within the function. (Actually, forgetting would
3254be a better way to describe what actually happens.) Of course,
3255recursive invocations each have their own local name space.
3256
Fred Drakeeee08cd1997-12-04 15:43:15 +00003257A \emph{scope} is a textual region of a Python program where a name space
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003258is directly accessible. ``Directly accessible'' here means that an
3259unqualified reference to a name attempts to find the name in the name
3260space.
3261
3262Although scopes are determined statically, they are used dynamically.
3263At any time during execution, exactly three nested scopes are in use
3264(i.e., exactly three name spaces are directly accessible): the
3265innermost scope, which is searched first, contains the local names,
3266the middle scope, searched next, contains the current module's global
3267names, and the outermost scope (searched last) is the name space
3268containing built-in names.
3269
3270Usually, the local scope references the local names of the (textually)
Guido van Rossum96628a91995-04-10 11:34:00 +00003271current function. Outside of functions, the local scope references
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003272the same name space as the global scope: the module's name space.
3273Class definitions place yet another name space in the local scope.
3274
3275It is important to realize that scopes are determined textually: the
3276global scope of a function defined in a module is that module's name
3277space, no matter from where or by what alias the function is called.
3278On the other hand, the actual search for names is done dynamically, at
Guido van Rossum96628a91995-04-10 11:34:00 +00003279run time --- however, the language definition is evolving towards
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003280static name resolution, at ``compile'' time, so don't rely on dynamic
3281name resolution! (In fact, local variables are already determined
3282statically.)
3283
3284A special quirk of Python is that assignments always go into the
3285innermost scope. Assignments do not copy data --- they just
3286bind names to objects. The same is true for deletions: the statement
Fred Drake391564f1998-04-01 23:11:56 +00003287\samp{del x} removes the binding of \code{x} from the name space
3288referenced by the local scope. In fact, all operations that introduce
3289new names use the local scope: in particular, import statements and
3290function definitions bind the module or function name in the local
3291scope. (The \keyword{global} statement can be used to indicate that
3292particular variables live in the global scope.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003293
3294
Fred Drakeb7833d31998-09-11 16:21:55 +00003295\section{A First Look at Classes \label{firstClasses}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003296
3297Classes introduce a little bit of new syntax, three new object types,
3298and some new semantics.
3299
3300
Fred Drakeb7833d31998-09-11 16:21:55 +00003301\subsection{Class Definition Syntax \label{classDefinition}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003302
3303The simplest form of class definition looks like this:
3304
3305\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003306class ClassName:
3307 <statement-1>
3308 .
3309 .
3310 .
3311 <statement-N>
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003312\end{verbatim}
3313
Fred Drake20082d92000-04-03 04:26:58 +00003314Class definitions, like function definitions
3315(\keyword{def} statements) must be executed before they have any
3316effect. (You could conceivably place a class definition in a branch
3317of an \keyword{if} statement, or inside a function.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003318
3319In practice, the statements inside a class definition will usually be
3320function definitions, but other statements are allowed, and sometimes
3321useful --- we'll come back to this later. The function definitions
3322inside a class normally have a peculiar form of argument list,
3323dictated by the calling conventions for methods --- again, this is
3324explained later.
3325
3326When a class definition is entered, a new name space is created, and
3327used as the local scope --- thus, all assignments to local variables
3328go into this new name space. In particular, function definitions bind
3329the name of the new function here.
3330
Fred Drakeeee08cd1997-12-04 15:43:15 +00003331When a class definition is left normally (via the end), a \emph{class
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003332object} is created. This is basically a wrapper around the contents
3333of the name space created by the class definition; we'll learn more
3334about class objects in the next section. The original local scope
3335(the one in effect just before the class definitions was entered) is
Fred Drakea594baf1998-04-03 05:16:31 +00003336reinstated, and the class object is bound here to the class name given
3337in the class definition header (\class{ClassName} in the example).
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003338
3339
Fred Drakeb7833d31998-09-11 16:21:55 +00003340\subsection{Class Objects \label{classObjects}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003341
3342Class objects support two kinds of operations: attribute references
3343and instantiation.
3344
Fred Drakeeee08cd1997-12-04 15:43:15 +00003345\emph{Attribute references} use the standard syntax used for all
Fred Drake8842e861998-02-13 07:16:30 +00003346attribute references in Python: \code{obj.name}. Valid attribute
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003347names are all the names that were in the class's name space when the
3348class object was created. So, if the class definition looked like
3349this:
3350
3351\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003352class MyClass:
3353 "A simple example class"
3354 i = 12345
3355 def f(x):
3356 return 'hello world'
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003357\end{verbatim}
3358
Fred Drake8842e861998-02-13 07:16:30 +00003359then \code{MyClass.i} and \code{MyClass.f} are valid attribute
Fred Drake20082d92000-04-03 04:26:58 +00003360references, returning an integer and a method object, respectively.
Guido van Rossum02455691997-07-17 16:21:52 +00003361Class attributes can also be assigned to, so you can change the value
Fred Drake20082d92000-04-03 04:26:58 +00003362of \code{MyClass.i} by assignment. \member{__doc__} is also a valid
3363attribute, returning the docstring belonging to the class: \code{"A
3364simple example class"}).
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003365
Fred Drakeeee08cd1997-12-04 15:43:15 +00003366Class \emph{instantiation} uses function notation. Just pretend that
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003367the class object is a parameterless function that returns a new
Fred Drake20082d92000-04-03 04:26:58 +00003368instance of the class. For example (assuming the above class):
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003369
3370\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003371x = MyClass()
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003372\end{verbatim}
3373
Fred Drakeeee08cd1997-12-04 15:43:15 +00003374creates a new \emph{instance} of the class and assigns this object to
3375the local variable \code{x}.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003376
Fred Drake20082d92000-04-03 04:26:58 +00003377The instantiation operation (``calling'' a class object) creates an
3378empty object. Many classes like to create objects in a known initial
3379state. Therefore a class may define a special method named
3380\method{__init__()}, like this:
3381
3382\begin{verbatim}
3383 def __init__(self):
3384 self.data = []
3385\end{verbatim}
3386
3387When a class defines an \method{__init__()} method, class
3388instantiation automatically invokes \method{__init__()} for the
3389newly-created class instance. So in this example, a new, initialized
3390instance can be obtained by:
3391
3392\begin{verbatim}
3393x = MyClass()
3394\end{verbatim}
3395
3396Of course, the \method{__init__()} method may have arguments for
3397greater flexibility. In that case, arguments given to the class
3398instantiation operator are passed on to \method{__init__()}. For
3399example,
3400
3401\begin{verbatim}
3402>>> class Complex:
3403... def __init__(self, realpart, imagpart):
3404... self.r = realpart
3405... self.i = imagpart
3406...
3407>>> x = Complex(3.0,-4.5)
3408>>> x.r, x.i
3409(3.0, -4.5)
3410\end{verbatim}
3411
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003412
Fred Drakeb7833d31998-09-11 16:21:55 +00003413\subsection{Instance Objects \label{instanceObjects}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003414
3415Now what can we do with instance objects? The only operations
3416understood by instance objects are attribute references. There are
3417two kinds of valid attribute names.
3418
Fred Drakeeee08cd1997-12-04 15:43:15 +00003419The first I'll call \emph{data attributes}. These correspond to
Fred Drake8842e861998-02-13 07:16:30 +00003420``instance variables'' in Smalltalk, and to ``data members'' in
3421\Cpp{}. Data attributes need not be declared; like local variables,
3422they spring into existence when they are first assigned to. For
3423example, if \code{x} is the instance of \class{MyClass} created above,
3424the following piece of code will print the value \code{16}, without
3425leaving a trace:
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003426
3427\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003428x.counter = 1
3429while x.counter < 10:
3430 x.counter = x.counter * 2
3431print x.counter
3432del x.counter
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003433\end{verbatim}
3434
3435The second kind of attribute references understood by instance objects
Fred Drakeeee08cd1997-12-04 15:43:15 +00003436are \emph{methods}. A method is a function that ``belongs to'' an
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003437object. (In Python, the term method is not unique to class instances:
3438other object types can have methods as well, e.g., list objects have
3439methods called append, insert, remove, sort, and so on. However,
3440below, we'll use the term method exclusively to mean methods of class
3441instance objects, unless explicitly stated otherwise.)
3442
3443Valid method names of an instance object depend on its class. By
Fred Drake8842e861998-02-13 07:16:30 +00003444definition, all attributes of a class that are (user-defined) function
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003445objects define corresponding methods of its instances. So in our
Fred Drakeeee08cd1997-12-04 15:43:15 +00003446example, \code{x.f} is a valid method reference, since
3447\code{MyClass.f} is a function, but \code{x.i} is not, since
Fred Drake8842e861998-02-13 07:16:30 +00003448\code{MyClass.i} is not. But \code{x.f} is not the same thing as
Fred Drake20082d92000-04-03 04:26:58 +00003449\code{MyClass.f} --- it is a \obindex{method}\emph{method object}, not
3450a function object.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003451
3452
Fred Drakeb7833d31998-09-11 16:21:55 +00003453\subsection{Method Objects \label{methodObjects}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003454
3455Usually, a method is called immediately, e.g.:
3456
3457\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003458x.f()
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003459\end{verbatim}
3460
Fred Drake8842e861998-02-13 07:16:30 +00003461In our example, this will return the string \code{'hello world'}.
Fred Drakeee84d591999-03-10 17:25:30 +00003462However, it is not necessary to call a method right away:
3463\code{x.f} is a method object, and can be stored away and called at a
3464later time. For example:
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003465
3466\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003467xf = x.f
3468while 1:
3469 print xf()
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003470\end{verbatim}
3471
Fred Drake8842e861998-02-13 07:16:30 +00003472will continue to print \samp{hello world} until the end of time.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003473
3474What exactly happens when a method is called? You may have noticed
Fred Drake8842e861998-02-13 07:16:30 +00003475that \code{x.f()} was called without an argument above, even though
3476the function definition for \method{f} specified an argument. What
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003477happened to the argument? Surely Python raises an exception when a
3478function that requires an argument is called without any --- even if
3479the argument isn't actually used...
3480
3481Actually, you may have guessed the answer: the special thing about
3482methods is that the object is passed as the first argument of the
Fred Drake8842e861998-02-13 07:16:30 +00003483function. In our example, the call \code{x.f()} is exactly equivalent
3484to \code{MyClass.f(x)}. In general, calling a method with a list of
Fred Drakeeee08cd1997-12-04 15:43:15 +00003485\var{n} arguments is equivalent to calling the corresponding function
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003486with an argument list that is created by inserting the method's object
3487before the first argument.
3488
3489If you still don't understand how methods work, a look at the
3490implementation can perhaps clarify matters. When an instance
3491attribute is referenced that isn't a data attribute, its class is
3492searched. If the name denotes a valid class attribute that is a
3493function object, a method object is created by packing (pointers to)
3494the instance object and the function object just found together in an
3495abstract object: this is the method object. When the method object is
3496called with an argument list, it is unpacked again, a new argument
3497list is constructed from the instance object and the original argument
3498list, and the function object is called with this new argument list.
3499
3500
Fred Drakeb7833d31998-09-11 16:21:55 +00003501\section{Random Remarks \label{remarks}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003502
3503[These should perhaps be placed more carefully...]
3504
3505
3506Data attributes override method attributes with the same name; to
3507avoid accidental name conflicts, which may cause hard-to-find bugs in
3508large programs, it is wise to use some kind of convention that
3509minimizes the chance of conflicts, e.g., capitalize method names,
3510prefix data attribute names with a small unique string (perhaps just
Guido van Rossum6938f061994-08-01 12:22:53 +00003511an underscore), or use verbs for methods and nouns for data attributes.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003512
3513
3514Data attributes may be referenced by methods as well as by ordinary
3515users (``clients'') of an object. In other words, classes are not
3516usable to implement pure abstract data types. In fact, nothing in
3517Python makes it possible to enforce data hiding --- it is all based
3518upon convention. (On the other hand, the Python implementation,
Fred Drakeee84d591999-03-10 17:25:30 +00003519written in C, can completely hide implementation details and control
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003520access to an object if necessary; this can be used by extensions to
Fred Drakeee84d591999-03-10 17:25:30 +00003521Python written in C.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003522
3523
3524Clients should use data attributes with care --- clients may mess up
3525invariants maintained by the methods by stamping on their data
3526attributes. Note that clients may add data attributes of their own to
3527an instance object without affecting the validity of the methods, as
3528long as name conflicts are avoided --- again, a naming convention can
3529save a lot of headaches here.
3530
3531
3532There is no shorthand for referencing data attributes (or other
3533methods!) from within methods. I find that this actually increases
3534the readability of methods: there is no chance of confusing local
3535variables and instance variables when glancing through a method.
3536
3537
3538Conventionally, the first argument of methods is often called
Fred Drake8842e861998-02-13 07:16:30 +00003539\code{self}. This is nothing more than a convention: the name
3540\code{self} has absolutely no special meaning to Python. (Note,
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003541however, that by not following the convention your code may be less
3542readable by other Python programmers, and it is also conceivable that
Fred Drakeeee08cd1997-12-04 15:43:15 +00003543a \emph{class browser} program be written which relies upon such a
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003544convention.)
3545
3546
3547Any function object that is a class attribute defines a method for
3548instances of that class. It is not necessary that the function
3549definition is textually enclosed in the class definition: assigning a
3550function object to a local variable in the class is also ok. For
3551example:
3552
3553\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003554# Function defined outside the class
3555def f1(self, x, y):
3556 return min(x, x+y)
3557
3558class C:
3559 f = f1
3560 def g(self):
3561 return 'hello world'
3562 h = g
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003563\end{verbatim}
3564
Fred Drake8842e861998-02-13 07:16:30 +00003565Now \code{f}, \code{g} and \code{h} are all attributes of class
3566\class{C} that refer to function objects, and consequently they are all
3567methods of instances of \class{C} --- \code{h} being exactly equivalent
3568to \code{g}. Note that this practice usually only serves to confuse
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003569the reader of a program.
3570
3571
3572Methods may call other methods by using method attributes of the
Fred Drake8842e861998-02-13 07:16:30 +00003573\code{self} argument, e.g.:
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003574
3575\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003576class Bag:
Fred Drake20082d92000-04-03 04:26:58 +00003577 def __init__(self):
Fred Drake8842e861998-02-13 07:16:30 +00003578 self.data = []
3579 def add(self, x):
3580 self.data.append(x)
3581 def addtwice(self, x):
3582 self.add(x)
3583 self.add(x)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003584\end{verbatim}
3585
3586
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003587Methods may reference global names in the same way as ordinary
3588functions. The global scope associated with a method is the module
3589containing the class definition. (The class itself is never used as a
3590global scope!) While one rarely encounters a good reason for using
3591global data in a method, there are many legitimate uses of the global
3592scope: for one thing, functions and modules imported into the global
3593scope can be used by methods, as well as functions and classes defined
3594in it. Usually, the class containing the method is itself defined in
3595this global scope, and in the next section we'll find some good
3596reasons why a method would want to reference its own class!
3597
3598
Fred Drakeb7833d31998-09-11 16:21:55 +00003599\section{Inheritance \label{inheritance}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003600
3601Of course, a language feature would not be worthy of the name ``class''
3602without supporting inheritance. The syntax for a derived class
3603definition looks as follows:
3604
3605\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003606class DerivedClassName(BaseClassName):
3607 <statement-1>
3608 .
3609 .
3610 .
3611 <statement-N>
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003612\end{verbatim}
3613
Fred Drake8842e861998-02-13 07:16:30 +00003614The name \class{BaseClassName} must be defined in a scope containing
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003615the derived class definition. Instead of a base class name, an
3616expression is also allowed. This is useful when the base class is
3617defined in another module, e.g.,
3618
3619\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003620class DerivedClassName(modname.BaseClassName):
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003621\end{verbatim}
3622
3623Execution of a derived class definition proceeds the same as for a
3624base class. When the class object is constructed, the base class is
3625remembered. This is used for resolving attribute references: if a
3626requested attribute is not found in the class, it is searched in the
3627base class. This rule is applied recursively if the base class itself
3628is derived from some other class.
3629
3630There's nothing special about instantiation of derived classes:
Fred Drake8842e861998-02-13 07:16:30 +00003631\code{DerivedClassName()} creates a new instance of the class. Method
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003632references are resolved as follows: the corresponding class attribute
3633is searched, descending down the chain of base classes if necessary,
3634and the method reference is valid if this yields a function object.
3635
3636Derived classes may override methods of their base classes. Because
3637methods have no special privileges when calling other methods of the
3638same object, a method of a base class that calls another method
3639defined in the same base class, may in fact end up calling a method of
Guido van Rossum16d6e711994-08-08 12:30:22 +00003640a derived class that overrides it. (For \Cpp{} programmers: all methods
Fred Drake20082d92000-04-03 04:26:58 +00003641in Python are effectively \keyword{virtual}.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003642
3643An overriding method in a derived class may in fact want to extend
3644rather than simply replace the base class method of the same name.
3645There is a simple way to call the base class method directly: just
Fred Drake8842e861998-02-13 07:16:30 +00003646call \samp{BaseClassName.methodname(self, arguments)}. This is
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003647occasionally useful to clients as well. (Note that this only works if
3648the base class is defined or imported directly in the global scope.)
3649
3650
Fred Drakeb7833d31998-09-11 16:21:55 +00003651\subsection{Multiple Inheritance \label{multiple}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003652
Guido van Rossum6938f061994-08-01 12:22:53 +00003653Python supports a limited form of multiple inheritance as well. A
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003654class definition with multiple base classes looks as follows:
3655
3656\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003657class DerivedClassName(Base1, Base2, Base3):
3658 <statement-1>
3659 .
3660 .
3661 .
3662 <statement-N>
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003663\end{verbatim}
3664
3665The only rule necessary to explain the semantics is the resolution
3666rule used for class attribute references. This is depth-first,
3667left-to-right. Thus, if an attribute is not found in
Fred Drake8842e861998-02-13 07:16:30 +00003668\class{DerivedClassName}, it is searched in \class{Base1}, then
3669(recursively) in the base classes of \class{Base1}, and only if it is
3670not found there, it is searched in \class{Base2}, and so on.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003671
Fred Drake8842e861998-02-13 07:16:30 +00003672(To some people breadth first --- searching \class{Base2} and
3673\class{Base3} before the base classes of \class{Base1} --- looks more
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003674natural. However, this would require you to know whether a particular
Fred Drake8842e861998-02-13 07:16:30 +00003675attribute of \class{Base1} is actually defined in \class{Base1} or in
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003676one of its base classes before you can figure out the consequences of
Fred Drake8842e861998-02-13 07:16:30 +00003677a name conflict with an attribute of \class{Base2}. The depth-first
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003678rule makes no differences between direct and inherited attributes of
Fred Drake8842e861998-02-13 07:16:30 +00003679\class{Base1}.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003680
3681It is clear that indiscriminate use of multiple inheritance is a
3682maintenance nightmare, given the reliance in Python on conventions to
3683avoid accidental name conflicts. A well-known problem with multiple
3684inheritance is a class derived from two classes that happen to have a
3685common base class. While it is easy enough to figure out what happens
3686in this case (the instance will have a single copy of ``instance
3687variables'' or data attributes used by the common base class), it is
3688not clear that these semantics are in any way useful.
3689
3690
Fred Drakeb7833d31998-09-11 16:21:55 +00003691\section{Private Variables \label{private}}
Guido van Rossum02455691997-07-17 16:21:52 +00003692
Fred Drakea594baf1998-04-03 05:16:31 +00003693There is limited support for class-private
Guido van Rossum02455691997-07-17 16:21:52 +00003694identifiers. Any identifier of the form \code{__spam} (at least two
3695leading underscores, at most one trailing underscore) is now textually
3696replaced with \code{_classname__spam}, where \code{classname} is the
3697current class name with leading underscore(s) stripped. This mangling
3698is done without regard of the syntactic position of the identifier, so
3699it can be used to define class-private instance and class variables,
3700methods, as well as globals, and even to store instance variables
Fred Drakeeee08cd1997-12-04 15:43:15 +00003701private to this class on instances of \emph{other} classes. Truncation
Guido van Rossum02455691997-07-17 16:21:52 +00003702may occur when the mangled name would be longer than 255 characters.
3703Outside classes, or when the class name consists of only underscores,
3704no mangling occurs.
3705
3706Name mangling is intended to give classes an easy way to define
3707``private'' instance variables and methods, without having to worry
3708about instance variables defined by derived classes, or mucking with
3709instance variables by code outside the class. Note that the mangling
3710rules are designed mostly to avoid accidents; it still is possible for
3711a determined soul to access or modify a variable that is considered
3712private. This can even be useful, e.g. for the debugger, and that's
3713one reason why this loophole is not closed. (Buglet: derivation of a
3714class with the same name as the base class makes use of private
3715variables of the base class possible.)
3716
3717Notice that code passed to \code{exec}, \code{eval()} or
3718\code{evalfile()} does not consider the classname of the invoking
3719class to be the current class; this is similar to the effect of the
3720\code{global} statement, the effect of which is likewise restricted to
3721code that is byte-compiled together. The same restriction applies to
3722\code{getattr()}, \code{setattr()} and \code{delattr()}, as well as
3723when referencing \code{__dict__} directly.
3724
3725Here's an example of a class that implements its own
3726\code{__getattr__} and \code{__setattr__} methods and stores all
3727attributes in a private variable, in a way that works in Python 1.4 as
3728well as in previous versions:
3729
3730\begin{verbatim}
3731class VirtualAttributes:
3732 __vdict = None
3733 __vdict_name = locals().keys()[0]
3734
3735 def __init__(self):
3736 self.__dict__[self.__vdict_name] = {}
3737
3738 def __getattr__(self, name):
3739 return self.__vdict[name]
3740
3741 def __setattr__(self, name, value):
3742 self.__vdict[name] = value
3743\end{verbatim}
3744
Fred Drakeaf8a0151998-01-14 14:51:31 +00003745%\emph{Warning: this is an experimental feature.} To avoid all
Guido van Rossum02455691997-07-17 16:21:52 +00003746%potential problems, refrain from using identifiers starting with
Fred Drake20082d92000-04-03 04:26:58 +00003747%double underscore except for predefined uses like \samp{__init__}. To
Guido van Rossum02455691997-07-17 16:21:52 +00003748%use private names while maintaining future compatibility: refrain from
3749%using the same private name in classes related via subclassing; avoid
3750%explicit (manual) mangling/unmangling; and assume that at some point
3751%in the future, leading double underscore will revert to being just a
3752%naming convention. Discussion on extensive compile-time declarations
3753%are currently underway, and it is impossible to predict what solution
3754%will eventually be chosen for private names. Double leading
3755%underscore is still a candidate, of course --- just not the only one.
3756%It is placed in the distribution in the belief that it is useful, and
3757%so that widespread experience with its use can be gained. It will not
3758%be removed without providing a better solution and a migration path.
3759
Fred Drakeb7833d31998-09-11 16:21:55 +00003760\section{Odds and Ends \label{odds}}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003761
3762Sometimes it is useful to have a data type similar to the Pascal
Fred Drakeee84d591999-03-10 17:25:30 +00003763``record'' or C ``struct'', bundling together a couple of named data
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003764items. An empty class definition will do nicely, e.g.:
3765
3766\begin{verbatim}
Fred Drake8842e861998-02-13 07:16:30 +00003767class Employee:
3768 pass
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003769
Fred Drake8842e861998-02-13 07:16:30 +00003770john = Employee() # Create an empty employee record
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003771
Fred Drake8842e861998-02-13 07:16:30 +00003772# Fill the fields of the record
3773john.name = 'John Doe'
3774john.dept = 'computer lab'
3775john.salary = 1000
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003776\end{verbatim}
3777
3778
3779A piece of Python code that expects a particular abstract data type
3780can often be passed a class that emulates the methods of that data
3781type instead. For instance, if you have a function that formats some
3782data from a file object, you can define a class with methods
Fred Drake8842e861998-02-13 07:16:30 +00003783\method{read()} and \method{readline()} that gets the data from a string
Fred Drake391564f1998-04-01 23:11:56 +00003784buffer instead, and pass it as an argument.% (Unfortunately, this
3785%technique has its limitations: a class can't define operations that
3786%are accessed by special syntax such as sequence subscripting or
3787%arithmetic operators, and assigning such a ``pseudo-file'' to
3788%\code{sys.stdin} will not cause the interpreter to read further input
3789%from it.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003790
3791
Fred Drake8842e861998-02-13 07:16:30 +00003792Instance method objects have attributes, too: \code{m.im_self} is the
3793object of which the method is an instance, and \code{m.im_func} is the
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003794function object corresponding to the method.
3795
Fred Drakeb7833d31998-09-11 16:21:55 +00003796\subsection{Exceptions Can Be Classes \label{exceptionClasses}}
Guido van Rossum194e57c1995-02-15 15:51:38 +00003797
3798User-defined exceptions are no longer limited to being string objects
3799--- they can be identified by classes as well. Using this mechanism it
3800is possible to create extensible hierarchies of exceptions.
3801
3802There are two new valid (semantic) forms for the raise statement:
3803
3804\begin{verbatim}
3805raise Class, instance
3806
3807raise instance
3808\end{verbatim}
3809
Fred Drake20082d92000-04-03 04:26:58 +00003810In the first form, \code{instance} must be an instance of
3811\class{Class} or of a class derived from it. The second form is a
3812shorthand for:
Guido van Rossum194e57c1995-02-15 15:51:38 +00003813
3814\begin{verbatim}
3815raise instance.__class__, instance
3816\end{verbatim}
3817
3818An except clause may list classes as well as string objects. A class
3819in an except clause is compatible with an exception if it is the same
3820class or a base class thereof (but not the other way around --- an
3821except clause listing a derived class is not compatible with a base
3822class). For example, the following code will print B, C, D in that
3823order:
3824
3825\begin{verbatim}
3826class B:
3827 pass
3828class C(B):
3829 pass
3830class D(C):
3831 pass
3832
3833for c in [B, C, D]:
3834 try:
3835 raise c()
3836 except D:
3837 print "D"
3838 except C:
3839 print "C"
3840 except B:
3841 print "B"
3842\end{verbatim}
3843
Fred Drakeee84d591999-03-10 17:25:30 +00003844Note that if the except clauses were reversed (with
3845\samp{except B} first), it would have printed B, B, B --- the first
3846matching except clause is triggered.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003847
3848When an error message is printed for an unhandled exception which is a
3849class, the class name is printed, then a colon and a space, and
3850finally the instance converted to a string using the built-in function
Fred Drake8842e861998-02-13 07:16:30 +00003851\function{str()}.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003852
Guido van Rossum194e57c1995-02-15 15:51:38 +00003853
Fred Drakeb7833d31998-09-11 16:21:55 +00003854\chapter{What Now? \label{whatNow}}
Guido van Rossum194e57c1995-02-15 15:51:38 +00003855
Guido van Rossum02455691997-07-17 16:21:52 +00003856Hopefully reading this tutorial has reinforced your interest in using
3857Python. Now what should you do?
Guido van Rossum194e57c1995-02-15 15:51:38 +00003858
Guido van Rossum02455691997-07-17 16:21:52 +00003859You should read, or at least page through, the Library Reference,
3860which gives complete (though terse) reference material about types,
3861functions, and modules that can save you a lot of time when writing
3862Python programs. The standard Python distribution includes a
Fred Drakeee84d591999-03-10 17:25:30 +00003863\emph{lot} of code in both C and Python; there are modules to read
Fred Drake8842e861998-02-13 07:16:30 +00003864\UNIX{} mailboxes, retrieve documents via HTTP, generate random
3865numbers, parse command-line options, write CGI programs, compress
3866data, and a lot more; skimming through the Library Reference will give
3867you an idea of what's available.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003868
Fred Drakeca6567f1998-01-22 20:44:18 +00003869The major Python Web site is \url{http://www.python.org}; it contains
Guido van Rossum02455691997-07-17 16:21:52 +00003870code, documentation, and pointers to Python-related pages around the
Fred Drake391564f1998-04-01 23:11:56 +00003871Web. This web site is mirrored in various places around the
Guido van Rossum02455691997-07-17 16:21:52 +00003872world, such as Europe, Japan, and Australia; a mirror may be faster
3873than the main site, depending on your geographical location. A more
Fred Drakec0fcbc11999-04-29 02:30:04 +00003874informal site is \url{http://starship.python.net/}, which contains a
Guido van Rossum02455691997-07-17 16:21:52 +00003875bunch of Python-related personal home pages; many people have
Fred Drakec0fcbc11999-04-29 02:30:04 +00003876downloadable software there.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003877
Guido van Rossum02455691997-07-17 16:21:52 +00003878For Python-related questions and problem reports, you can post to the
Fred Drake391564f1998-04-01 23:11:56 +00003879newsgroup \newsgroup{comp.lang.python}, or send them to the mailing
3880list at \email{python-list@cwi.nl}. The newsgroup and mailing list
3881are gatewayed, so messages posted to one will automatically be
3882forwarded to the other. There are around 35--45 postings a day,
3883% Postings figure based on average of last six months activity as
3884% reported by www.findmail.com; Oct. '97 - Mar. '98: 7480 msgs / 182
3885% days = 41.1 msgs / day.
3886asking (and answering) questions, suggesting new features, and
3887announcing new modules. Before posting, be sure to check the list of
3888Frequently Asked Questions (also called the FAQ), at
Fred Drakeca6567f1998-01-22 20:44:18 +00003889\url{http://www.python.org/doc/FAQ.html}, or look for it in the
3890\file{Misc/} directory of the Python source distribution. The FAQ
Guido van Rossum02455691997-07-17 16:21:52 +00003891answers many of the questions that come up again and again, and may
3892already contain the solution for your problem.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003893
Guido van Rossum02455691997-07-17 16:21:52 +00003894You can support the Python community by joining the Python Software
3895Activity, which runs the python.org web, ftp and email servers, and
Fred Drakeca6567f1998-01-22 20:44:18 +00003896organizes Python workshops. See \url{http://www.python.org/psa/} for
Guido van Rossum02455691997-07-17 16:21:52 +00003897information on how to join.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003898
Guido van Rossum194e57c1995-02-15 15:51:38 +00003899
Fred Drakea594baf1998-04-03 05:16:31 +00003900\appendix
Guido van Rossum194e57c1995-02-15 15:51:38 +00003901
Fred Drakeb7833d31998-09-11 16:21:55 +00003902\chapter{Interactive Input Editing and History Substitution
3903 \label{interacting}}
Guido van Rossum194e57c1995-02-15 15:51:38 +00003904
Guido van Rossum02455691997-07-17 16:21:52 +00003905Some versions of the Python interpreter support editing of the current
3906input line and history substitution, similar to facilities found in
3907the Korn shell and the GNU Bash shell. This is implemented using the
Fred Drakeeee08cd1997-12-04 15:43:15 +00003908\emph{GNU Readline} library, which supports Emacs-style and vi-style
Guido van Rossum02455691997-07-17 16:21:52 +00003909editing. This library has its own documentation which I won't
Fred Drakecc09e8d1998-12-28 21:21:36 +00003910duplicate here; however, the basics are easily explained. The
3911interactive editing and history described here are optionally
3912available in the \UNIX{} and CygWin versions of the interpreter.
3913
3914This chapter does \emph{not} document the editing facilities of Mark
3915Hammond's PythonWin package or the Tk-based environment, IDLE,
3916distributed with Python. The command line history recall which
3917operates within DOS boxes on NT and some other DOS and Windows flavors
3918is yet another beast.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003919
Fred Drakeb7833d31998-09-11 16:21:55 +00003920\section{Line Editing \label{lineEditing}}
Guido van Rossum194e57c1995-02-15 15:51:38 +00003921
Guido van Rossum02455691997-07-17 16:21:52 +00003922If supported, input line editing is active whenever the interpreter
3923prints a primary or secondary prompt. The current line can be edited
3924using the conventional Emacs control characters. The most important
3925of these are: C-A (Control-A) moves the cursor to the beginning of the
3926line, C-E to the end, C-B moves it one position to the left, C-F to
3927the right. Backspace erases the character to the left of the cursor,
3928C-D the character to its right. C-K kills (erases) the rest of the
3929line to the right of the cursor, C-Y yanks back the last killed
3930string. C-underscore undoes the last change you made; it can be
3931repeated for cumulative effect.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003932
Fred Drakeb7833d31998-09-11 16:21:55 +00003933\section{History Substitution \label{history}}
Guido van Rossum194e57c1995-02-15 15:51:38 +00003934
Guido van Rossum02455691997-07-17 16:21:52 +00003935History substitution works as follows. All non-empty input lines
3936issued are saved in a history buffer, and when a new prompt is given
3937you are positioned on a new line at the bottom of this buffer. C-P
3938moves one line up (back) in the history buffer, C-N moves one down.
3939Any line in the history buffer can be edited; an asterisk appears in
3940front of the prompt to mark a line as modified. Pressing the Return
3941key passes the current line to the interpreter. C-R starts an
3942incremental reverse search; C-S starts a forward search.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003943
Fred Drakeb7833d31998-09-11 16:21:55 +00003944\section{Key Bindings \label{keyBindings}}
Guido van Rossum194e57c1995-02-15 15:51:38 +00003945
Guido van Rossum02455691997-07-17 16:21:52 +00003946The key bindings and some other parameters of the Readline library can
3947be customized by placing commands in an initialization file called
Fred Drakeeee08cd1997-12-04 15:43:15 +00003948\file{\$HOME/.inputrc}. Key bindings have the form
Guido van Rossum194e57c1995-02-15 15:51:38 +00003949
Fred Drake8842e861998-02-13 07:16:30 +00003950\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00003951key-name: function-name
Fred Drake8842e861998-02-13 07:16:30 +00003952\end{verbatim}
3953
Guido van Rossum02455691997-07-17 16:21:52 +00003954or
Guido van Rossum194e57c1995-02-15 15:51:38 +00003955
Fred Drake8842e861998-02-13 07:16:30 +00003956\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00003957"string": function-name
Fred Drake8842e861998-02-13 07:16:30 +00003958\end{verbatim}
3959
Guido van Rossum02455691997-07-17 16:21:52 +00003960and options can be set with
Guido van Rossum194e57c1995-02-15 15:51:38 +00003961
Fred Drake8842e861998-02-13 07:16:30 +00003962\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00003963set option-name value
Fred Drake8842e861998-02-13 07:16:30 +00003964\end{verbatim}
3965
Guido van Rossum02455691997-07-17 16:21:52 +00003966For example:
Guido van Rossum194e57c1995-02-15 15:51:38 +00003967
Fred Drake8842e861998-02-13 07:16:30 +00003968\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00003969# I prefer vi-style editing:
3970set editing-mode vi
3971# Edit using a single line:
3972set horizontal-scroll-mode On
3973# Rebind some keys:
3974Meta-h: backward-kill-word
3975"\C-u": universal-argument
3976"\C-x\C-r": re-read-init-file
Fred Drake8842e861998-02-13 07:16:30 +00003977\end{verbatim}
3978
Guido van Rossum02455691997-07-17 16:21:52 +00003979Note that the default binding for TAB in Python is to insert a TAB
3980instead of Readline's default filename completion function. If you
3981insist, you can override this by putting
Guido van Rossum194e57c1995-02-15 15:51:38 +00003982
Fred Drake8842e861998-02-13 07:16:30 +00003983\begin{verbatim}
Guido van Rossum02455691997-07-17 16:21:52 +00003984TAB: complete
Fred Drake8842e861998-02-13 07:16:30 +00003985\end{verbatim}
3986
Fred Drakeeee08cd1997-12-04 15:43:15 +00003987in your \file{\$HOME/.inputrc}. (Of course, this makes it hard to type
Guido van Rossum02455691997-07-17 16:21:52 +00003988indented continuation lines...)
Guido van Rossum194e57c1995-02-15 15:51:38 +00003989
Fred Drake72389881998-04-13 01:31:10 +00003990Automatic completion of variable and module names is optionally
3991available. To enable it in the interpreter's interactive mode, add
Fred Drake20082d92000-04-03 04:26:58 +00003992the following to your \file{\$HOME/.pythonrc.py} file:%
Fred Drakeee84d591999-03-10 17:25:30 +00003993\indexii{.pythonrc.py}{file}
Fred Drake20082d92000-04-03 04:26:58 +00003994\refstmodindex{rlcompleter}\refbimodindex{readline}
Fred Drake72389881998-04-13 01:31:10 +00003995
3996\begin{verbatim}
3997import rlcompleter, readline
3998readline.parse_and_bind('tab: complete')
3999\end{verbatim}
4000
4001This binds the TAB key to the completion function, so hitting the TAB
4002key twice suggests completions; it looks at Python statement names,
4003the current local variables, and the available module names. For
4004dotted expressions such as \code{string.a}, it will evaluate the the
4005expression up to the final \character{.} and then suggest completions
4006from the attributes of the resulting object. Note that this may
4007execute application-defined code if an object with a
4008\method{__getattr__()} method is part of the expression.
4009
4010
Fred Drakeb7833d31998-09-11 16:21:55 +00004011\section{Commentary \label{commentary}}
Guido van Rossum194e57c1995-02-15 15:51:38 +00004012
Guido van Rossum02455691997-07-17 16:21:52 +00004013This facility is an enormous step forward compared to previous
4014versions of the interpreter; however, some wishes are left: It would
4015be nice if the proper indentation were suggested on continuation lines
4016(the parser knows if an indent token is required next). The
4017completion mechanism might use the interpreter's symbol table. A
4018command to check (or even suggest) matching parentheses, quotes etc.
4019would also be useful.
Guido van Rossum194e57c1995-02-15 15:51:38 +00004020
Fred Drake8842e861998-02-13 07:16:30 +00004021% XXX Lele Gaifax's readline module, which adds name completion...
Guido van Rossum97662c81996-08-23 15:35:47 +00004022
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00004023\end{document}