blob: c510e69a4fc94be7051d2a20d546cdbabad430da [file] [log] [blame]
Guido van Rossum37953781992-04-06 14:04:04 +00001\documentstyle[twoside,11pt,myformat]{report}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002
Guido van Rossum6938f061994-08-01 12:22:53 +00003\title{Python Tutorial}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00004
Guido van Rossum16cd7f91994-10-06 10:29:26 +00005\input{boilerplate}
Guido van Rossum83eb9621993-11-23 16:28:45 +00006
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00007\begin{document}
8
9\pagenumbering{roman}
10
11\maketitle
12
Guido van Rossum16cd7f91994-10-06 10:29:26 +000013\input{copyright}
14
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000015\begin{abstract}
16
17\noindent
Guido van Rossum4410c751991-06-04 20:22:18 +000018Python is a simple, yet powerful programming language that bridges the
Guido van Rossum6fc178f1991-08-16 09:13:42 +000019gap between C and shell programming, and is thus ideally suited for
20``throw-away programming''
21and rapid prototyping. Its syntax is put
22together from constructs borrowed from a variety of other languages;
23most prominent are influences from ABC, C, Modula-3 and Icon.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000024
Guido van Rossum4410c751991-06-04 20:22:18 +000025The Python interpreter is easily extended with new functions and data
Guido van Rossum6fc178f1991-08-16 09:13:42 +000026types implemented in C. Python is also suitable as an extension
27language for highly customizable C applications such as editors or
28window managers.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000029
Guido van Rossum4410c751991-06-04 20:22:18 +000030Python is available for various operating systems, amongst which
Guido van Rossum6fc178f1991-08-16 09:13:42 +000031several flavors of {\UNIX}, Amoeba, the Apple Macintosh O.S.,
32and MS-DOS.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000033
Guido van Rossum6fc178f1991-08-16 09:13:42 +000034This tutorial introduces the reader informally to the basic concepts
35and features of the Python language and system. It helps to have a
36Python interpreter handy for hands-on experience, but as the examples
37are self-contained, the tutorial can be read off-line as well.
Guido van Rossum2292b8e1991-01-23 16:31:24 +000038
Guido van Rossum481ae681991-11-25 17:28:03 +000039For a description of standard objects and modules, see the {\em Python
40Library Reference} document. The {\em Python Reference Manual} gives
41a more formal definition of the language.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000042
43\end{abstract}
44
45\pagebreak
Guido van Rossumcdc93551992-02-11 15:53:13 +000046{
47\parskip = 0mm
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000048\tableofcontents
Guido van Rossumcdc93551992-02-11 15:53:13 +000049}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000050
51\pagebreak
52
53\pagenumbering{arabic}
54
Guido van Rossum5e0759d1992-08-07 16:06:24 +000055
Guido van Rossum6fc178f1991-08-16 09:13:42 +000056\chapter{Whetting Your Appetite}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000057
Guido van Rossum6fc178f1991-08-16 09:13:42 +000058If you ever wrote a large shell script, you probably know this
59feeling: you'd love to add yet another feature, but it's already so
60slow, and so big, and so complicated; or the feature involves a system
Guido van Rossum6938f061994-08-01 12:22:53 +000061call or other function that is only accessible from C \ldots Usually
Guido van Rossum6fc178f1991-08-16 09:13:42 +000062the problem at hand isn't serious enough to warrant rewriting the
63script in C; perhaps because the problem requires variable-length
64strings or other data types (like sorted lists of file names) that are
65easy in the shell but lots of work to implement in C; or perhaps just
66because you're not sufficiently familiar with C.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000067
Guido van Rossum6fc178f1991-08-16 09:13:42 +000068In such cases, Python may be just the language for you. Python is
69simple to use, but it is a real programming language, offering much
70more structure and support for large programs than the shell has. On
71the other hand, it also offers much more error checking than C, and,
72being a {\em very-high-level language}, it has high-level data types
73built in, such as flexible arrays and dictionaries that would cost you
74days to implement efficiently in C. Because of its more general data
75types Python is applicable to a much larger problem domain than {\em
Guido van Rossuma8d754e1992-01-07 16:44:35 +000076Awk} or even {\em Perl}, yet many things are at least as easy in
77Python as in those languages.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000078
Guido van Rossum6fc178f1991-08-16 09:13:42 +000079Python allows you to split up your program in modules that can be
80reused in other Python programs. It comes with a large collection of
Guido van Rossuma8d754e1992-01-07 16:44:35 +000081standard modules that you can use as the basis of your programs --- or
82as examples to start learning to program in Python. There are also
83built-in modules that provide things like file I/O, system calls,
84sockets, and even a generic interface to window systems (STDWIN).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000085
Guido van Rossuma8d754e1992-01-07 16:44:35 +000086Python is an interpreted language, which can save you considerable time
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000087during program development because no compilation and linking is
Guido van Rossum6fc178f1991-08-16 09:13:42 +000088necessary. The interpreter can be used interactively, which makes it
89easy to experiment with features of the language, to write throw-away
90programs, or to test functions during bottom-up program development.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000091It is also a handy desk calculator.
92
Guido van Rossum6fc178f1991-08-16 09:13:42 +000093Python allows writing very compact and readable programs. Programs
94written in Python are typically much shorter than equivalent C
95programs, for several reasons:
96\begin{itemize}
97\item
98the high-level data types allow you to express complex operations in a
99single statement;
100\item
101statement grouping is done by indentation instead of begin/end
102brackets;
103\item
104no variable or argument declarations are necessary.
105\end{itemize}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000106
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000107Python is {\em extensible}: if you know how to program in C it is easy
108to add a new built-in
109function or
110module to the interpreter, either to
111perform critical operations at maximum speed, or to link Python
112programs to libraries that may only be available in binary form (such
113as a vendor-specific graphics library). Once you are really hooked,
114you can link the Python interpreter into an application written in C
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000115and use it as an extension or command language for that application.
116
117By the way, the language is named after the BBC show ``Monty
118Python's Flying Circus'' and has nothing to do with nasty reptiles...
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000119
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000120\section{Where From Here}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000121
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000122Now that you are all excited about Python, you'll want to examine it
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000123in some more detail. Since the best way to learn a language is
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000124using it, you are invited here to do so.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000125
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000126In the next chapter, the mechanics of using the interpreter are
127explained. This is rather mundane information, but essential for
128trying out the examples shown later.
129
Guido van Rossum4410c751991-06-04 20:22:18 +0000130The rest of the tutorial introduces various features of the Python
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000131language and system though examples, beginning with simple
132expressions, statements and data types, through functions and modules,
Guido van Rossum6938f061994-08-01 12:22:53 +0000133and finally touching upon advanced concepts like exceptions
134and user-defined classes.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000135
Guido van Rossum6938f061994-08-01 12:22:53 +0000136When you're through with the tutorial (or just getting bored), you
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000137should read the Library Reference, which gives complete (though terse)
138reference material about built-in and standard types, functions and
139modules that can save you a lot of time when writing Python programs.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000140
Guido van Rossum5e0759d1992-08-07 16:06:24 +0000141
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000142\chapter{Using the Python Interpreter}
143
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000144\section{Invoking the Interpreter}
145
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000146The Python interpreter is usually installed as {\tt /usr/local/bin/python}
147on those machines where it is available; putting {\tt /usr/local/bin} in
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000148your {\UNIX} shell's search path makes it possible to start it by
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000149typing the command
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000150
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000151\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000152python
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000153\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000154%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000155to the shell. Since the choice of the directory where the interpreter
156lives is an installation option, other places are possible; check with
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000157your local Python guru or system administrator. (E.g., {\tt
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000158/usr/local/python} is a popular alternative location.)
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000159
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000160The interpreter operates somewhat like the {\UNIX} shell: when called
161with standard input connected to a tty device, it reads and executes
162commands interactively; when called with a file name argument or with
163a file as standard input, it reads and executes a {\em script} from
164that file.
165
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000166A third way of starting the interpreter is
167``{\tt python -c command [arg] ...}'', which
168executes the statement(s) in {\tt command}, analogous to the shell's
169{\tt -c} option. Since Python statements often contain spaces or other
170characters that are special to the shell, it is best to quote {\tt
171command} in its entirety with double quotes.
172
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000173Note that there is a difference between ``{\tt python file}'' and
174``{\tt python $<$file}''. In the latter case, input requests from the
Guido van Rossum573805a1992-03-06 10:56:03 +0000175program, such as calls to {\tt input()} and {\tt raw_input()}, are
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000176satisfied from {\em file}. Since this file has already been read
177until the end by the parser before the program starts executing, the
178program will encounter EOF immediately. In the former case (which is
179usually what you want) they are satisfied from whatever file or device
180is connected to standard input of the Python interpreter.
181
Guido van Rossumb2c65561993-05-12 08:53:36 +0000182When a script file is used, it is sometimes useful to be able to run
183the script and enter interactive mode afterwards. This can be done by
184passing {\tt -i} before the script. (This does not work if the script
185is read from standard input, for the same reason as explained in the
186previous paragraph.)
187
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000188\subsection{Argument Passing}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000189
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000190When known to the interpreter, the script name and additional
191arguments thereafter are passed to the script in the variable {\tt
192sys.argv}, which is a list of strings. Its length is at least one;
193when no script and no arguments are given, {\tt sys.argv[0]} is an
194empty string. When the script name is given as {\tt '-'} (meaning
195standard input), {\tt sys.argv[0]} is set to {\tt '-'}. When {\tt -c
196command} is used, {\tt sys.argv[0]} is set to {\tt '-c'}. Options
197found after {\tt -c command} are not consumed by the Python
198interpreter's option processing but left in {\tt sys.argv} for the
199command to handle.
200
201\subsection{Interactive Mode}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000202
Guido van Rossumdd010801991-06-07 14:31:11 +0000203When commands are read from a tty, the interpreter is said to be in
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000204{\em interactive\ mode}. In this mode it prompts for the next command
205with the {\em primary\ prompt}, usually three greater-than signs ({\tt
Guido van Rossuma67dee31995-09-13 17:34:25 +0000206>>>}); for continuation lines it prompts with the
207{\em secondary\ prompt},
Guido van Rossum34e17771996-06-10 19:44:49 +0000208by default three dots ({\tt ...}). Typing an EOF character
209(Control-D on {\UNIX}, Control-Z on DOS or Windows)
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000210at the primary prompt causes the interpreter to exit with a zero exit
211status.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000212
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000213The interpreter prints a welcome message stating its version number
214and a copyright notice before printing the first prompt, e.g.:
215
216\bcode\begin{verbatim}
217python
Guido van Rossum288527a1995-10-09 21:02:17 +0000218Python 1.3 (Oct 13 1995)
Guido van Rossum1133aec1995-03-15 11:34:18 +0000219Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000220>>>
221\end{verbatim}\ecode
222
223\section{The Interpreter and its Environment}
224
225\subsection{Error Handling}
226
227When an error occurs, the interpreter prints an error
228message and a stack trace. In interactive mode, it then returns to
229the primary prompt; when input came from a file, it exits with a
230nonzero exit status after printing
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000231the stack trace. (Exceptions handled by an {\tt except} clause in a
232{\tt try} statement are not errors in this context.) Some errors are
233unconditionally fatal and cause an exit with a nonzero exit; this
234applies to internal inconsistencies and some cases of running out of
235memory. All error messages are written to the standard error stream;
236normal output from the executed commands is written to standard
237output.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000238
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000239Typing the interrupt character (usually Control-C or DEL) to the
240primary or secondary prompt cancels the input and returns to the
241primary prompt.%
242\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +0000243 A problem with the GNU Readline package may prevent this.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000244}
245Typing an interrupt while a command is executing raises the {\tt
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000246KeyboardInterrupt} exception, which may be handled by a {\tt try}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000247statement.
248
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000249\subsection{The Module Search Path}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000250
Guido van Rossume5f8b601995-01-04 19:12:49 +0000251When a module named {\tt spam} is imported, the interpreter searches
252for a file named {\tt spam.py} in the list of directories specified by
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000253the environment variable {\tt PYTHONPATH}. It has the same syntax as
254the {\UNIX} shell variable {\tt PATH}, i.e., a list of colon-separated
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000255directory names. When {\tt PYTHONPATH} is not set, or when the file
256is not found there, the search continues in an installation-dependent
257default path, usually {\tt .:/usr/local/lib/python}.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000258
259Actually, modules are searched in the list of directories given by the
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000260variable {\tt sys.path} which is initialized from {\tt PYTHONPATH} and
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000261the installation-dependent default. This allows Python programs that
262know what they're doing to modify or replace the module search path.
263See the section on Standard Modules later.
264
265\subsection{``Compiled'' Python files}
266
267As an important speed-up of the start-up time for short programs that
Guido van Rossume5f8b601995-01-04 19:12:49 +0000268use a lot of standard modules, if a file called {\tt spam.pyc} exists
269in the directory where {\tt spam.py} is found, this is assumed to
270contain an already-``compiled'' version of the module {\tt spam}. The
271modification time of the version of {\tt spam.py} used to create {\tt
272spam.pyc} is recorded in {\tt spam.pyc}, and the file is ignored if
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000273these don't match.
274
Guido van Rossume5f8b601995-01-04 19:12:49 +0000275Whenever {\tt spam.py} is successfully compiled, an attempt is made to
276write the compiled version to {\tt spam.pyc}. It is not an error if
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000277this attempt fails; if for any reason the file is not written
Guido van Rossume5f8b601995-01-04 19:12:49 +0000278completely, the resulting {\tt spam.pyc} file will be recognized as
Guido van Rossum34e17771996-06-10 19:44:49 +0000279invalid and thus ignored later. The contents of the {\tt spam.pyc}
280file is platform independent, so a Python module directory can be
281shared by machines of different architectures.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000282
283\subsection{Executable Python scripts}
Guido van Rossum4410c751991-06-04 20:22:18 +0000284
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000285On BSD'ish {\UNIX} systems, Python scripts can be made directly
286executable, like shell scripts, by putting the line
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000287
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000288\bcode\begin{verbatim}
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000289#! /usr/local/bin/python
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000290\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000291%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000292(assuming that's the name of the interpreter) at the beginning of the
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000293script and giving the file an executable mode. The {\tt \#!} must be
294the first two characters of the file.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000295
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000296\subsection{The Interactive Startup File}
297
298When you use Python interactively, it is frequently handy to have some
299standard commands executed every time the interpreter is started. You
300can do this by setting an environment variable named {\tt
301PYTHONSTARTUP} to the name of a file containing your start-up
Guido van Rossum6938f061994-08-01 12:22:53 +0000302commands. This is similar to the {\tt .profile} feature of the UNIX
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000303shells.
304
305This file is only read in interactive sessions, not when Python reads
306commands from a script, and not when {\tt /dev/tty} is given as the
307explicit source of commands (which otherwise behaves like an
308interactive session). It is executed in the same name space where
309interactive commands are executed, so that objects that it defines or
310imports can be used without qualification in the interactive session.
Guido van Rossum7b3c8a11992-09-08 09:20:13 +0000311You can also change the prompts {\tt sys.ps1} and {\tt sys.ps2} in
312this file.
Guido van Rossum9a4e3fc1992-09-03 21:27:55 +0000313
314If you want to read an additional start-up file from the current
315directory, you can program this in the global start-up file, e.g.
316\verb\execfile('.pythonrc')\. If you want to use the startup file
317in a script, you must write this explicitly in the script, e.g.
318\verb\import os;\ \verb\execfile(os.environ['PYTHONSTARTUP'])\.
319
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000320\section{Interactive Input Editing and History Substitution}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000321
Guido van Rossum4410c751991-06-04 20:22:18 +0000322Some versions of the Python interpreter support editing of the current
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000323input line and history substitution, similar to facilities found in
324the Korn shell and the GNU Bash shell. This is implemented using the
325{\em GNU\ Readline} library, which supports Emacs-style and vi-style
326editing. This library has its own documentation which I won't
327duplicate here; however, the basics are easily explained.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000328
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000329Perhaps the quickest check to see whether command line editing is
330supported is typing Control-P to the first Python prompt you get. If
331it beeps, you have command line editing. If nothing appears to
332happen, or if \verb/^P/ is echoed, you can skip the rest of this
333section.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000334
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000335\subsection{Line Editing}
336
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000337If supported, input line editing is active whenever the interpreter
338prints a primary or secondary prompt. The current line can be edited
339using the conventional Emacs control characters. The most important
340of these are: C-A (Control-A) moves the cursor to the beginning of the
341line, C-E to the end, C-B moves it one position to the left, C-F to
342the right. Backspace erases the character to the left of the cursor,
343C-D the character to its right. C-K kills (erases) the rest of the
344line to the right of the cursor, C-Y yanks back the last killed
345string. C-underscore undoes the last change you made; it can be
346repeated for cumulative effect.
347
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000348\subsection{History Substitution}
349
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000350History substitution works as follows. All non-empty input lines
351issued are saved in a history buffer, and when a new prompt is given
352you are positioned on a new line at the bottom of this buffer. C-P
353moves one line up (back) in the history buffer, C-N moves one down.
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000354Any line in the history buffer can be edited; an asterisk appears in
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000355front of the prompt to mark a line as modified. Pressing the Return
356key passes the current line to the interpreter. C-R starts an
357incremental reverse search; C-S starts a forward search.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000358
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000359\subsection{Key Bindings}
360
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000361The key bindings and some other parameters of the Readline library can
362be customized by placing commands in an initialization file called
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000363{\tt \$HOME/.inputrc}. Key bindings have the form
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000364
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000365\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000366key-name: function-name
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000367\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000368%
369or
370
371\bcode\begin{verbatim}
372"string": function-name
373\end{verbatim}\ecode
374%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000375and options can be set with
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000376
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000377\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000378set option-name value
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000379\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000380%
381For example:
382
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000383\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000384# I prefer vi-style editing:
385set editing-mode vi
386# Edit using a single line:
387set horizontal-scroll-mode On
388# Rebind some keys:
389Meta-h: backward-kill-word
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000390"\C-u": universal-argument
391"\C-x\C-r": re-read-init-file
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000392\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000393%
Guido van Rossum4410c751991-06-04 20:22:18 +0000394Note that the default binding for TAB in Python is to insert a TAB
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000395instead of Readline's default filename completion function. If you
396insist, you can override this by putting
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000397
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000398\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000399TAB: complete
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000400\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000401%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000402in your {\tt \$HOME/.inputrc}. (Of course, this makes it hard to type
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000403indented continuation lines...)
404
405\subsection{Commentary}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000406
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000407This facility is an enormous step forward compared to previous
408versions of the interpreter; however, some wishes are left: It would
409be nice if the proper indentation were suggested on continuation lines
410(the parser knows if an indent token is required next). The
411completion mechanism might use the interpreter's symbol table. A
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000412command to check (or even suggest) matching parentheses, quotes etc.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000413would also be useful.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000414
Guido van Rossum5e0759d1992-08-07 16:06:24 +0000415
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000416\chapter{An Informal Introduction to Python}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000417
418In the following examples, input and output are distinguished by the
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000419presence or absence of prompts ({\tt >>>} and {\tt ...}): to repeat
420the example, you must type everything after the prompt, when the
421prompt appears; lines that do not begin with a prompt are output from
422the interpreter.%
423\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +0000424 I'd prefer to use different fonts to distinguish input
425 from output, but the amount of LaTeX hacking that would require
426 is currently beyond my ability.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000427}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000428Note that a secondary prompt on a line by itself in an example means
429you must type a blank line; this is used to end a multi-line command.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000430
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000431\section{Using Python as a Calculator}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000432
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000433Let's try some simple Python commands. Start the interpreter and wait
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000434for the primary prompt, {\tt >>>}. (It shouldn't take long.)
435
436\subsection{Numbers}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000437
438The interpreter acts as a simple calculator: you can type an
439expression at it and it will write the value. Expression syntax is
440straightforward: the operators {\tt +}, {\tt -}, {\tt *} and {\tt /}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000441work just like in most other languages (e.g., Pascal or C); parentheses
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000442can be used for grouping. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000443
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000444\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000445>>> 2+2
4464
Guido van Rossum6938f061994-08-01 12:22:53 +0000447>>> # This is a comment
448... 2+2
4494
450>>> 2+2 # and a comment on the same line as code
4514
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000452>>> (50-5*6)/4
4535
Guido van Rossum6938f061994-08-01 12:22:53 +0000454>>> # Integer division returns the floor:
455... 7/3
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00004562
Guido van Rossum6938f061994-08-01 12:22:53 +0000457>>> 7/-3
458-3
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000459>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000460\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000461%
462Like in C, the equal sign ({\tt =}) is used to assign a value to a
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000463variable. The value of an assignment is not written:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000464
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000465\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000466>>> width = 20
467>>> height = 5*9
468>>> width * height
469900
470>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000471\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000472%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000473A value can be assigned to several variables simultaneously:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000474
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000475\bcode\begin{verbatim}
Guido van Rossum6938f061994-08-01 12:22:53 +0000476>>> x = y = z = 0 # Zero x, y and z
477>>> x
4780
479>>> y
4800
481>>> z
4820
483>>>
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000484\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000485%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000486There is full support for floating point; operators with mixed type
487operands convert the integer operand to floating point:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000488
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000489\bcode\begin{verbatim}
490>>> 4 * 2.5 / 3.3
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00004913.0303030303
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000492>>> 7.0 / 2
4933.5
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000494>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000495\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000496
497\subsection{Strings}
498
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000499Besides numbers, Python can also manipulate strings, enclosed in
Guido van Rossum6938f061994-08-01 12:22:53 +0000500single quotes or double quotes:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000501
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000502\bcode\begin{verbatim}
Guido van Rossume5f8b601995-01-04 19:12:49 +0000503>>> 'spam eggs'
504'spam eggs'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000505>>> 'doesn\'t'
Guido van Rossum6938f061994-08-01 12:22:53 +0000506"doesn't"
507>>> "doesn't"
508"doesn't"
509>>> '"Yes," he said.'
510'"Yes," he said.'
511>>> "\"Yes,\" he said."
512'"Yes," he said.'
513>>> '"Isn\'t," she said.'
514'"Isn\'t," she said.'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000515>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000516\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000517%
518Strings are written the same way as they are typed for input: inside
Guido van Rossum6938f061994-08-01 12:22:53 +0000519quotes and with quotes and other funny characters escaped by backslashes,
520to show the precise value. The string is enclosed in double quotes if
521the string contains a single quote and no double quotes, else it's
522enclosed in single quotes. (The {\tt print} statement, described later,
523can be used to write strings without quotes or escapes.)
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000524
525Strings can be concatenated (glued together) with the {\tt +}
526operator, and repeated with {\tt *}:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000527
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000528\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000529>>> word = 'Help' + 'A'
530>>> word
531'HelpA'
532>>> '<' + word*5 + '>'
533'<HelpAHelpAHelpAHelpAHelpA>'
534>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000535\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000536%
537Strings can be subscripted (indexed); like in C, the first character of
538a string has subscript (index) 0.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000539
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000540There is no separate character type; a character is simply a string of
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000541size one. Like in Icon, substrings can be specified with the {\em
542slice} notation: two indices separated by a colon.
543
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000544\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000545>>> word[4]
546'A'
547>>> word[0:2]
548'He'
549>>> word[2:4]
550'lp'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000551>>>
552\end{verbatim}\ecode
553%
554Slice indices have useful defaults; an omitted first index defaults to
555zero, an omitted second index defaults to the size of the string being
556sliced.
557
558\bcode\begin{verbatim}
559>>> word[:2] # The first two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000560'He'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000561>>> word[2:] # All but the first two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000562'lpA'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000563>>>
564\end{verbatim}\ecode
565%
566Here's a useful invariant of slice operations: \verb\s[:i] + s[i:]\
567equals \verb\s\.
568
569\bcode\begin{verbatim}
570>>> word[:2] + word[2:]
571'HelpA'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000572>>> word[:3] + word[3:]
573'HelpA'
574>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000575\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000576%
577Degenerate slice indices are handled gracefully: an index that is too
578large is replaced by the string size, an upper bound smaller than the
579lower bound returns an empty string.
580
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000581\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000582>>> word[1:100]
583'elpA'
584>>> word[10:]
585''
586>>> word[2:1]
587''
588>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000589\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000590%
591Indices may be negative numbers, to start counting from the right.
592For example:
593
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000594\bcode\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000595>>> word[-1] # The last character
596'A'
597>>> word[-2] # The last-but-one character
598'p'
599>>> word[-2:] # The last two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000600'pA'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000601>>> word[:-2] # All but the last two characters
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000602'Hel'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000603>>>
604\end{verbatim}\ecode
605%
606But note that -0 is really the same as 0, so it does not count from
607the right!
608
609\bcode\begin{verbatim}
610>>> word[-0] # (since -0 equals 0)
611'H'
612>>>
613\end{verbatim}\ecode
614%
615Out-of-range negative slice indices are truncated, but don't try this
616for single-element (non-slice) indices:
617
618\bcode\begin{verbatim}
619>>> word[-100:]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000620'HelpA'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000621>>> word[-10] # error
Guido van Rossum6938f061994-08-01 12:22:53 +0000622Traceback (innermost last):
623 File "<stdin>", line 1
624IndexError: string index out of range
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000625>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000626\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000627%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000628The best way to remember how slices work is to think of the indices as
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000629pointing {\em between} characters, with the left edge of the first
630character numbered 0. Then the right edge of the last character of a
631string of {\tt n} characters has index {\tt n}, for example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000632
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000633\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000634 +---+---+---+---+---+
635 | H | e | l | p | A |
636 +---+---+---+---+---+
637 0 1 2 3 4 5
638-5 -4 -3 -2 -1
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000639\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000640%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000641The first row of numbers gives the position of the indices 0...5 in
642the string; the second row gives the corresponding negative indices.
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000643The slice from \verb\i\ to \verb\j\ consists of all characters between
644the edges labeled \verb\i\ and \verb\j\, respectively.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000645
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000646For nonnegative indices, the length of a slice is the difference of
647the indices, if both are within bounds, e.g., the length of
648\verb\word[1:3]\ is 2.
649
650The built-in function {\tt len()} returns the length of a string:
651
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000652\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000653>>> s = 'supercalifragilisticexpialidocious'
654>>> len(s)
65534
656>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000657\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000658
659\subsection{Lists}
660
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000661Python knows a number of {\em compound} data types, used to group
662together other values. The most versatile is the {\em list}, which
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000663can be written as a list of comma-separated values (items) between
664square brackets. List items need not all have the same type.
665
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000666\bcode\begin{verbatim}
Guido van Rossume5f8b601995-01-04 19:12:49 +0000667>>> a = ['spam', 'eggs', 100, 1234]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000668>>> a
Guido van Rossume5f8b601995-01-04 19:12:49 +0000669['spam', 'eggs', 100, 1234]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000670>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000671\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000672%
673Like string indices, list indices start at 0, and lists can be sliced,
674concatenated and so on:
675
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000676\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000677>>> a[0]
Guido van Rossume5f8b601995-01-04 19:12:49 +0000678'spam'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000679>>> a[3]
6801234
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000681>>> a[-2]
682100
683>>> a[1:-1]
Guido van Rossume5f8b601995-01-04 19:12:49 +0000684['eggs', 100]
685>>> a[:2] + ['bacon', 2*2]
686['spam', 'eggs', 'bacon', 4]
Guido van Rossum4410c751991-06-04 20:22:18 +0000687>>> 3*a[:3] + ['Boe!']
Guido van Rossume5f8b601995-01-04 19:12:49 +0000688['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boe!']
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000689>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000690\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000691%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000692Unlike strings, which are {\em immutable}, it is possible to change
693individual elements of a list:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000694
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000695\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000696>>> a
Guido van Rossume5f8b601995-01-04 19:12:49 +0000697['spam', 'eggs', 100, 1234]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000698>>> a[2] = a[2] + 23
699>>> a
Guido van Rossume5f8b601995-01-04 19:12:49 +0000700['spam', 'eggs', 123, 1234]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000701>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000702\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000703%
704Assignment to slices is also possible, and this can even change the size
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000705of the list:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000706
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000707\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000708>>> # Replace some items:
Guido van Rossum6938f061994-08-01 12:22:53 +0000709... a[0:2] = [1, 12]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000710>>> a
711[1, 12, 123, 1234]
712>>> # Remove some:
Guido van Rossum6938f061994-08-01 12:22:53 +0000713... a[0:2] = []
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000714>>> a
715[123, 1234]
716>>> # Insert some:
Guido van Rossum6938f061994-08-01 12:22:53 +0000717... a[1:1] = ['bletch', 'xyzzy']
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000718>>> a
719[123, 'bletch', 'xyzzy', 1234]
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000720>>> a[:0] = a # Insert (a copy of) itself at the beginning
721>>> a
722[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000723>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000724\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000725%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000726The built-in function {\tt len()} also applies to lists:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000727
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000728\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000729>>> len(a)
Guido van Rossuma8d754e1992-01-07 16:44:35 +00007308
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000731>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000732\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000733%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000734It is possible to nest lists (create lists containing other lists),
735for example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000736
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000737\bcode\begin{verbatim}
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000738>>> q = [2, 3]
739>>> p = [1, q, 4]
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000740>>> len(p)
7413
742>>> p[1]
743[2, 3]
744>>> p[1][0]
7452
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000746>>> p[1].append('xtra') # See section 5.1
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000747>>> p
748[1, [2, 3, 'xtra'], 4]
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000749>>> q
750[2, 3, 'xtra']
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000751>>>
752\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000753%
754Note that in the last example, {\tt p[1]} and {\tt q} really refer to
755the same object! We'll come back to {\em object semantics} later.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000756
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000757\section{First Steps Towards Programming}
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000758
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000759Of course, we can use Python for more complicated tasks than adding
760two and two together. For instance, we can write an initial
761subsequence of the {\em Fibonacci} series as follows:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000762
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000763\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000764>>> # Fibonacci series:
Guido van Rossum6938f061994-08-01 12:22:53 +0000765... # the sum of two elements defines the next
766... a, b = 0, 1
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000767>>> while b < 10:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000768... print b
769... a, b = b, a+b
770...
7711
7721
7732
7743
7755
7768
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000777>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000778\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000779%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000780This example introduces several new features.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000781
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000782\begin{itemize}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000783
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000784\item
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000785The first line contains a {\em multiple assignment}: the variables
786{\tt a} and {\tt b} simultaneously get the new values 0 and 1. On the
787last line this is used again, demonstrating that the expressions on
788the right-hand side are all evaluated first before any of the
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000789assignments take place.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000790
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000791\item
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000792The {\tt while} loop executes as long as the condition (here: {\tt b <
Guido van Rossum16cd7f91994-10-06 10:29:26 +000079310}) remains true. In Python, like in C, any non-zero integer value is
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000794true; zero is false. The condition may also be a string or list value,
795in fact any sequence; anything with a non-zero length is true, empty
796sequences are false. The test used in the example is a simple
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000797comparison. The standard comparison operators are written the same as
798in C: {\tt <}, {\tt >}, {\tt ==}, {\tt <=}, {\tt >=} and {\tt !=}.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000799
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000800\item
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000801The {\em body} of the loop is {\em indented}: indentation is Python's
802way of grouping statements. Python does not (yet!) provide an
803intelligent input line editing facility, so you have to type a tab or
804space(s) for each indented line. In practice you will prepare more
805complicated input for Python with a text editor; most text editors have
806an auto-indent facility. When a compound statement is entered
807interactively, it must be followed by a blank line to indicate
808completion (since the parser cannot guess when you have typed the last
809line).
810
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000811\item
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000812The {\tt print} statement writes the value of the expression(s) it is
813given. It differs from just writing the expression you want to write
814(as we did earlier in the calculator examples) in the way it handles
Guido van Rossum16cd7f91994-10-06 10:29:26 +0000815multiple expressions and strings. Strings are printed without quotes,
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000816and a space is inserted between items, so you can format things nicely,
817like this:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000818
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000819\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000820>>> i = 256*256
821>>> print 'The value of i is', i
822The value of i is 65536
823>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000824\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000825%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000826A trailing comma avoids the newline after the output:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000827
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000828\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000829>>> a, b = 0, 1
830>>> while b < 1000:
831... print b,
832... a, b = b, a+b
833...
8341 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
835>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000836\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000837%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000838Note that the interpreter inserts a newline before it prints the next
839prompt if the last line was not completed.
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000840
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000841\end{itemize}
842
Guido van Rossum5e0759d1992-08-07 16:06:24 +0000843
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000844\chapter{More Control Flow Tools}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000845
Guido van Rossum4410c751991-06-04 20:22:18 +0000846Besides the {\tt while} statement just introduced, Python knows the
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000847usual control flow statements known from other languages, with some
848twists.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000849
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000850\section{If Statements}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000851
852Perhaps the most well-known statement type is the {\tt if} statement.
853For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000854
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000855\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000856>>> if x < 0:
857... x = 0
858... print 'Negative changed to zero'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000859... elif x == 0:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000860... print 'Zero'
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000861... elif x == 1:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000862... print 'Single'
863... else:
864... print 'More'
865...
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000866\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000867%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000868There can be zero or more {\tt elif} parts, and the {\tt else} part is
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000869optional. The keyword `{\tt elif}' is short for `{\tt else if}', and is
870useful to avoid excessive indentation. An {\tt if...elif...elif...}
871sequence is a substitute for the {\em switch} or {\em case} statements
872found in other languages.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000873
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000874\section{For Statements}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000875
Guido van Rossum4410c751991-06-04 20:22:18 +0000876The {\tt for} statement in Python differs a bit from what you may be
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000877used to in C or Pascal. Rather than always iterating over an
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000878arithmetic progression of numbers (like in Pascal), or leaving the user
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000879completely free in the iteration test and step (as C), Python's {\tt
880for} statement iterates over the items of any sequence (e.g., a list
881or a string), in the order that they appear in the sequence. For
882example (no pun intended):
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000883
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000884\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000885>>> # Measure some strings:
Guido van Rossum6938f061994-08-01 12:22:53 +0000886... a = ['cat', 'window', 'defenestrate']
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000887>>> for x in a:
888... print x, len(x)
889...
890cat 3
891window 6
892defenestrate 12
893>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000894\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000895%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000896It is not safe to modify the sequence being iterated over in the loop
897(this can only happen for mutable sequence types, i.e., lists). If
898you need to modify the list you are iterating over, e.g., duplicate
899selected items, you must iterate over a copy. The slice notation
900makes this particularly convenient:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000901
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000902\bcode\begin{verbatim}
903>>> for x in a[:]: # make a slice copy of the entire list
904... if len(x) > 6: a.insert(0, x)
905...
906>>> a
907['defenestrate', 'cat', 'window', 'defenestrate']
908>>>
909\end{verbatim}\ecode
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000910
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000911\section{The {\tt range()} Function}
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000912
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000913If you do need to iterate over a sequence of numbers, the built-in
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000914function {\tt range()} comes in handy. It generates lists containing
915arithmetic progressions, e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000916
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000917\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000918>>> range(10)
919[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
920>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000921\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000922%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000923The given end point is never part of the generated list; {\tt range(10)}
924generates a list of 10 values, exactly the legal indices for items of a
925sequence of length 10. It is possible to let the range start at another
926number, or to specify a different increment (even negative):
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000927
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000928\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000929>>> range(5, 10)
930[5, 6, 7, 8, 9]
931>>> range(0, 10, 3)
932[0, 3, 6, 9]
933>>> range(-10, -100, -30)
934[-10, -40, -70]
935>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000936\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000937%
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000938To iterate over the indices of a sequence, combine {\tt range()} and
939{\tt len()} as follows:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000940
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000941\bcode\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000942>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000943>>> for i in range(len(a)):
944... print i, a[i]
945...
9460 Mary
9471 had
9482 a
9493 little
Guido van Rossum6fc178f1991-08-16 09:13:42 +00009504 lamb
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000951>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000952\end{verbatim}\ecode
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000953
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000954\section{Break and Continue Statements, and Else Clauses on Loops}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000955
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000956The {\tt break} statement, like in C, breaks out of the smallest
957enclosing {\tt for} or {\tt while} loop.
958
959The {\tt continue} statement, also borrowed from C, continues with the
960next iteration of the loop.
961
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000962Loop statements may have an {\tt else} clause; it is executed when the
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000963loop terminates through exhaustion of the list (with {\tt for}) or when
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000964the condition becomes false (with {\tt while}), but not when the loop is
965terminated by a {\tt break} statement. This is exemplified by the
Guido van Rossumcfb45e41994-11-10 23:04:43 +0000966following loop, which searches for prime numbers:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000967
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000968\bcode\begin{verbatim}
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000969>>> for n in range(2, 10):
970... for x in range(2, n):
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000971... if n % x == 0:
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000972... print n, 'equals', x, '*', n/x
973... break
974... else:
975... print n, 'is a prime number'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000976...
Guido van Rossum2292b8e1991-01-23 16:31:24 +00009772 is a prime number
9783 is a prime number
9794 equals 2 * 2
9805 is a prime number
9816 equals 2 * 3
9827 is a prime number
9838 equals 2 * 4
9849 equals 3 * 3
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000985>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000986\end{verbatim}\ecode
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000987
Guido van Rossum6fc178f1991-08-16 09:13:42 +0000988\section{Pass Statements}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000989
Guido van Rossum2292b8e1991-01-23 16:31:24 +0000990The {\tt pass} statement does nothing.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000991It can be used when a statement is required syntactically but the
992program requires no action.
993For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +0000994
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000995\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +0000996>>> while 1:
997... pass # Busy-wait for keyboard interrupt
998...
Guido van Rossum5ce78f11991-01-25 13:27:18 +0000999\end{verbatim}\ecode
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001000
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001001\section{Defining Functions}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001002
1003We can create a function that writes the Fibonacci series to an
1004arbitrary boundary:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001005
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001006\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001007>>> def fib(n): # write Fibonacci series up to n
1008... a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00001009... while b < n:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001010... print b,
1011... a, b = b, a+b
1012...
1013>>> # Now call the function we just defined:
Guido van Rossum6938f061994-08-01 12:22:53 +00001014... fib(2000)
Guido van Rossumd9bf55d1991-01-11 16:35:08 +000010151 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
1016>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001017\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001018%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001019The keyword {\tt def} introduces a function {\em definition}. It must
1020be followed by the function name and the parenthesized list of formal
1021parameters. The statements that form the body of the function starts at
1022the next line, indented by a tab stop.
1023
1024The {\em execution} of a function introduces a new symbol table used
1025for the local variables of the function. More precisely, all variable
1026assignments in a function store the value in the local symbol table;
1027whereas
Guido van Rossum6938f061994-08-01 12:22:53 +00001028variable references first look in the local symbol table, then
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001029in the global symbol table, and then in the table of built-in names.
1030Thus,
Guido van Rossumcfb45e41994-11-10 23:04:43 +00001031global variables cannot be directly assigned a value within a
Guido van Rossum6938f061994-08-01 12:22:53 +00001032function (unless named in a {\tt global} statement), although
1033they may be referenced.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001034
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001035The actual parameters (arguments) to a function call are introduced in
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001036the local symbol table of the called function when it is called; thus,
1037arguments are passed using {\em call\ by\ value}.%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001038\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +00001039 Actually, {\em call by object reference} would be a better
1040 description, since if a mutable object is passed, the caller
1041 will see any changes the callee makes to it (e.g., items
1042 inserted into a list).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001043}
1044When a function calls another function, a new local symbol table is
1045created for that call.
1046
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001047A function definition introduces the function name in the
1048current
1049symbol table. The value
1050of the function name
1051has a type that is recognized by the interpreter as a user-defined
1052function. This value can be assigned to another name which can then
1053also be used as a function. This serves as a general renaming
1054mechanism:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001055
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001056\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001057>>> fib
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001058<function object at 10042ed0>
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001059>>> f = fib
1060>>> f(100)
10611 1 2 3 5 8 13 21 34 55 89
1062>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001063\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001064%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001065You might object that {\tt fib} is not a function but a procedure. In
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001066Python, like in C, procedures are just functions that don't return a
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001067value. In fact, technically speaking, procedures do return a value,
1068albeit a rather boring one. This value is called {\tt None} (it's a
1069built-in name). Writing the value {\tt None} is normally suppressed by
1070the interpreter if it would be the only value written. You can see it
1071if you really want to:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001072
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001073\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001074>>> print fib(0)
1075None
1076>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001077\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001078%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001079It is simple to write a function that returns a list of the numbers of
1080the Fibonacci series, instead of printing it:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001081
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001082\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001083>>> def fib2(n): # return Fibonacci series up to n
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001084... result = []
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001085... a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00001086... while b < n:
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001087... result.append(b) # see below
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001088... a, b = b, a+b
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001089... return result
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001090...
1091>>> f100 = fib2(100) # call it
1092>>> f100 # write the result
1093[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
1094>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001095\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001096%
Guido van Rossum4410c751991-06-04 20:22:18 +00001097This example, as usual, demonstrates some new Python features:
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001098
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001099\begin{itemize}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001100
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001101\item
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001102The {\tt return} statement returns with a value from a function. {\tt
1103return} without an expression argument is used to return from the middle
Guido van Rossum6938f061994-08-01 12:22:53 +00001104of a procedure (falling off the end also returns from a procedure), in
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001105which case the {\tt None} value is returned.
1106
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001107\item
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001108The statement {\tt result.append(b)} calls a {\em method} of the list
1109object {\tt result}. A method is a function that `belongs' to an
1110object and is named {\tt obj.methodname}, where {\tt obj} is some
1111object (this may be an expression), and {\tt methodname} is the name
1112of a method that is defined by the object's type. Different types
1113define different methods. Methods of different types may have the
1114same name without causing ambiguity. (It is possible to define your
Guido van Rossum6938f061994-08-01 12:22:53 +00001115own object types and methods, using {\em classes}, as discussed later
1116in this tutorial.)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001117The method {\tt append} shown in the example, is defined for
1118list objects; it adds a new element at the end of the list. In this
1119example
1120it is equivalent to {\tt result = result + [b]}, but more efficient.
1121
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001122\end{itemize}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001123
Guido van Rossum5e0759d1992-08-07 16:06:24 +00001124
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001125\chapter{Odds and Ends}
1126
1127This chapter describes some things you've learned about already in
1128more detail, and adds some new things as well.
1129
1130\section{More on Lists}
1131
1132The list data type has some more methods. Here are all of the methods
1133of lists objects:
1134
Guido van Rossum7d9f8d71991-01-22 11:45:00 +00001135\begin{description}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001136
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001137\item[{\tt insert(i, x)}]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001138Insert an item at a given position. The first argument is the index of
1139the element before which to insert, so {\tt a.insert(0, x)} inserts at
1140the front of the list, and {\tt a.insert(len(a), x)} is equivalent to
1141{\tt a.append(x)}.
1142
1143\item[{\tt append(x)}]
1144Equivalent to {\tt a.insert(len(a), x)}.
1145
1146\item[{\tt index(x)}]
1147Return the index in the list of the first item whose value is {\tt x}.
1148It is an error if there is no such item.
1149
1150\item[{\tt remove(x)}]
1151Remove the first item from the list whose value is {\tt x}.
1152It is an error if there is no such item.
1153
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001154\item[{\tt sort()}]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001155Sort the items of the list, in place.
1156
1157\item[{\tt reverse()}]
1158Reverse the elements of the list, in place.
1159
Guido van Rossum6938f061994-08-01 12:22:53 +00001160\item[{\tt count(x)}]
1161Return the number of times {\tt x} appears in the list.
1162
Guido van Rossum7d9f8d71991-01-22 11:45:00 +00001163\end{description}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001164
1165An example that uses all list methods:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001166
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001167\bcode\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001168>>> a = [66.6, 333, 333, 1, 1234.5]
Guido van Rossum6938f061994-08-01 12:22:53 +00001169>>> print a.count(333), a.count(66.6), a.count('x')
11702 1 0
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001171>>> a.insert(2, -1)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001172>>> a.append(333)
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001173>>> a
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001174[66.6, 333, -1, 333, 1, 1234.5, 333]
1175>>> a.index(333)
11761
1177>>> a.remove(333)
1178>>> a
1179[66.6, -1, 333, 1, 1234.5, 333]
1180>>> a.reverse()
1181>>> a
1182[333, 1234.5, 1, 333, -1, 66.6]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001183>>> a.sort()
1184>>> a
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001185[-1, 1, 66.6, 333, 333, 1234.5]
1186>>>
1187\end{verbatim}\ecode
1188
1189\section{The {\tt del} statement}
1190
1191There is a way to remove an item from a list given its index instead
1192of its value: the {\tt del} statement. This can also be used to
1193remove slices from a list (which we did earlier by assignment of an
1194empty list to the slice). For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001195
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001196\bcode\begin{verbatim}
1197>>> a
1198[-1, 1, 66.6, 333, 333, 1234.5]
1199>>> del a[0]
1200>>> a
1201[1, 66.6, 333, 333, 1234.5]
1202>>> del a[2:4]
1203>>> a
1204[1, 66.6, 1234.5]
1205>>>
1206\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001207%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001208{\tt del} can also be used to delete entire variables:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001209
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001210\bcode\begin{verbatim}
1211>>> del a
1212>>>
1213\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001214%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001215Referencing the name {\tt a} hereafter is an error (at least until
1216another value is assigned to it). We'll find other uses for {\tt del}
1217later.
1218
1219\section{Tuples and Sequences}
1220
1221We saw that lists and strings have many common properties, e.g.,
Guido van Rossum6938f061994-08-01 12:22:53 +00001222indexing and slicing operations. They are two examples of {\em
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001223sequence} data types. Since Python is an evolving language, other
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001224sequence data types may be added. There is also another standard
1225sequence data type: the {\em tuple}.
1226
1227A tuple consists of a number of values separated by commas, for
1228instance:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001229
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001230\bcode\begin{verbatim}
1231>>> t = 12345, 54321, 'hello!'
1232>>> t[0]
123312345
1234>>> t
1235(12345, 54321, 'hello!')
1236>>> # Tuples may be nested:
Guido van Rossum6938f061994-08-01 12:22:53 +00001237... u = t, (1, 2, 3, 4, 5)
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001238>>> u
1239((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
1240>>>
1241\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001242%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001243As you see, on output tuples are alway enclosed in parentheses, so
1244that nested tuples are interpreted correctly; they may be input with
1245or without surrounding parentheses, although often parentheses are
1246necessary anyway (if the tuple is part of a larger expression).
1247
1248Tuples have many uses, e.g., (x, y) coordinate pairs, employee records
1249from a database, etc. Tuples, like strings, are immutable: it is not
1250possible to assign to the individual items of a tuple (you can
1251simulate much of the same effect with slicing and concatenation,
1252though).
1253
1254A special problem is the construction of tuples containing 0 or 1
Guido van Rossum6938f061994-08-01 12:22:53 +00001255items: the syntax has some extra quirks to accommodate these. Empty
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001256tuples are constructed by an empty pair of parentheses; a tuple with
1257one item is constructed by following a value with a comma
1258(it is not sufficient to enclose a single value in parentheses).
1259Ugly, but effective. For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001260
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001261\bcode\begin{verbatim}
1262>>> empty = ()
1263>>> singleton = 'hello', # <-- note trailing comma
1264>>> len(empty)
12650
1266>>> len(singleton)
12671
1268>>> singleton
1269('hello',)
1270>>>
1271\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001272%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001273The statement {\tt t = 12345, 54321, 'hello!'} is an example of {\em
1274tuple packing}: the values {\tt 12345}, {\tt 54321} and {\tt 'hello!'}
1275are packed together in a tuple. The reverse operation is also
1276possible, e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001277
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001278\bcode\begin{verbatim}
1279>>> x, y, z = t
1280>>>
1281\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001282%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001283This is called, appropriately enough, {\em tuple unpacking}. Tuple
1284unpacking requires that the list of variables on the left has the same
1285number of elements as the length of the tuple. Note that multiple
1286assignment is really just a combination of tuple packing and tuple
1287unpacking!
1288
1289Occasionally, the corresponding operation on lists is useful: {\em list
1290unpacking}. This is supported by enclosing the list of variables in
1291square brackets:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001292
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001293\bcode\begin{verbatim}
Guido van Rossume5f8b601995-01-04 19:12:49 +00001294>>> a = ['spam', 'eggs', 100, 1234]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001295>>> [a1, a2, a3, a4] = a
1296>>>
1297\end{verbatim}\ecode
1298
1299\section{Dictionaries}
1300
1301Another useful data type built into Python is the {\em dictionary}.
1302Dictionaries are sometimes found in other languages as ``associative
1303memories'' or ``associative arrays''. Unlike sequences, which are
1304indexed by a range of numbers, dictionaries are indexed by {\em keys},
Guido van Rossum6938f061994-08-01 12:22:53 +00001305which are strings (the use of non-string values as keys
1306is supported, but beyond the scope of this tutorial).
1307It is best to think of a dictionary as an unordered set of
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001308{\em key:value} pairs, with the requirement that the keys are unique
1309(within one dictionary).
1310A pair of braces creates an empty dictionary: \verb/{}/.
1311Placing a comma-separated list of key:value pairs within the
1312braces adds initial key:value pairs to the dictionary; this is also the
1313way dictionaries are written on output.
1314
1315The main operations on a dictionary are storing a value with some key
1316and extracting the value given the key. It is also possible to delete
1317a key:value pair
1318with {\tt del}.
1319If you store using a key that is already in use, the old value
1320associated with that key is forgotten. It is an error to extract a
Guido van Rossum6938f061994-08-01 12:22:53 +00001321value using a non-existent key.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001322
1323The {\tt keys()} method of a dictionary object returns a list of all the
1324keys used in the dictionary, in random order (if you want it sorted,
1325just apply the {\tt sort()} method to the list of keys). To check
1326whether a single key is in the dictionary, use the \verb/has_key()/
1327method of the dictionary.
1328
1329Here is a small example using a dictionary:
1330
1331\bcode\begin{verbatim}
1332>>> tel = {'jack': 4098, 'sape': 4139}
1333>>> tel['guido'] = 4127
1334>>> tel
Guido van Rossum8f96f771991-11-12 15:45:03 +00001335{'sape': 4139, 'guido': 4127, 'jack': 4098}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001336>>> tel['jack']
13374098
1338>>> del tel['sape']
1339>>> tel['irv'] = 4127
1340>>> tel
Guido van Rossum8f96f771991-11-12 15:45:03 +00001341{'guido': 4127, 'irv': 4127, 'jack': 4098}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001342>>> tel.keys()
1343['guido', 'irv', 'jack']
1344>>> tel.has_key('guido')
13451
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001346>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001347\end{verbatim}\ecode
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001348
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001349\section{More on Conditions}
1350
1351The conditions used in {\tt while} and {\tt if} statements above can
1352contain other operators besides comparisons.
1353
1354The comparison operators {\tt in} and {\tt not in} check whether a value
1355occurs (does not occur) in a sequence. The operators {\tt is} and {\tt
1356is not} compare whether two objects are really the same object; this
1357only matters for mutable objects like lists. All comparison operators
1358have the same priority, which is lower than that of all numerical
1359operators.
1360
Guido van Rossum16cd7f91994-10-06 10:29:26 +00001361Comparisons can be chained: e.g., {\tt a < b == c} tests whether {\tt a}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001362is less than {\tt b} and moreover {\tt b} equals {\tt c}.
1363
1364Comparisons may be combined by the Boolean operators {\tt and} and {\tt
1365or}, and the outcome of a comparison (or of any other Boolean
1366expression) may be negated with {\tt not}. These all have lower
1367priorities than comparison operators again; between them, {\tt not} has
1368the highest priority, and {\tt or} the lowest, so that
1369{\tt A and not B or C} is equivalent to {\tt (A and (not B)) or C}. Of
1370course, parentheses can be used to express the desired composition.
1371
1372The Boolean operators {\tt and} and {\tt or} are so-called {\em
1373shortcut} operators: their arguments are evaluated from left to right,
1374and evaluation stops as soon as the outcome is determined. E.g., if
1375{\tt A} and {\tt C} are true but {\tt B} is false, {\tt A and B and C}
1376does not evaluate the expression C. In general, the return value of a
1377shortcut operator, when used as a general value and not as a Boolean, is
1378the last evaluated argument.
1379
1380It is possible to assign the result of a comparison or other Boolean
Guido van Rossum6938f061994-08-01 12:22:53 +00001381expression to a variable. For example,
1382
1383\bcode\begin{verbatim}
1384>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
1385>>> non_null = string1 or string2 or string3
1386>>> non_null
1387'Trondheim'
1388>>>
1389\end{verbatim}\ecode
1390%
1391Note that in Python, unlike C, assignment cannot occur inside expressions.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001392
1393\section{Comparing Sequences and Other Types}
1394
1395Sequence objects may be compared to other objects with the same
1396sequence type. The comparison uses {\em lexicographical} ordering:
1397first the first two items are compared, and if they differ this
1398determines the outcome of the comparison; if they are equal, the next
1399two items are compared, and so on, until either sequence is exhausted.
1400If two items to be compared are themselves sequences of the same type,
Guido van Rossum6938f061994-08-01 12:22:53 +00001401the lexicographical comparison is carried out recursively. If all
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001402items of two sequences compare equal, the sequences are considered
1403equal. If one sequence is an initial subsequence of the other, the
1404shorted sequence is the smaller one. Lexicographical ordering for
Guido van Rossum47b4c0f1995-03-15 11:25:32 +00001405strings uses the \ASCII{} ordering for individual characters. Some
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001406examples of comparisons between sequences with the same types:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001407
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001408\bcode\begin{verbatim}
1409(1, 2, 3) < (1, 2, 4)
1410[1, 2, 3] < [1, 2, 4]
1411'ABC' < 'C' < 'Pascal' < 'Python'
1412(1, 2, 3, 4) < (1, 2, 4)
1413(1, 2) < (1, 2, -1)
1414(1, 2, 3) = (1.0, 2.0, 3.0)
1415(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
1416\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001417%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001418Note that comparing objects of different types is legal. The outcome
1419is deterministic but arbitrary: the types are ordered by their name.
1420Thus, a list is always smaller than a string, a string is always
1421smaller than a tuple, etc. Mixed numeric types are compared according
1422to their numeric value, so 0 equals 0.0, etc.%
1423\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +00001424 The rules for comparing objects of different types should
1425 not be relied upon; they may change in a future version of
1426 the language.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001427}
1428
Guido van Rossum5e0759d1992-08-07 16:06:24 +00001429
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001430\chapter{Modules}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001431
Guido van Rossum4410c751991-06-04 20:22:18 +00001432If you quit from the Python interpreter and enter it again, the
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001433definitions you have made (functions and variables) are lost.
1434Therefore, if you want to write a somewhat longer program, you are
1435better off using a text editor to prepare the input for the interpreter
Guido van Rossum16d6e711994-08-08 12:30:22 +00001436and running it with that file as input instead. This is known as creating a
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001437{\em script}. As your program gets longer, you may want to split it
1438into several files for easier maintenance. You may also want to use a
1439handy function that you've written in several programs without copying
1440its definition into each program.
1441
Guido van Rossum4410c751991-06-04 20:22:18 +00001442To support this, Python has a way to put definitions in a file and use
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001443them in a script or in an interactive instance of the interpreter.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001444Such a file is called a {\em module}; definitions from a module can be
1445{\em imported} into other modules or into the {\em main} module (the
1446collection of variables that you have access to in a script
1447executed at the top level
1448and in calculator mode).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001449
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001450A module is a file containing Python definitions and statements. The
Guido van Rossum6938f061994-08-01 12:22:53 +00001451file name is the module name with the suffix {\tt .py} appended. Within
1452a module, the module's name (as a string) is available as the value of
1453the global variable {\tt __name__}. For instance, use your favorite text
1454editor to create a file called {\tt fibo.py} in the current directory
1455with the following contents:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001456
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001457\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001458# Fibonacci numbers module
1459
1460def fib(n): # write Fibonacci series up to n
1461 a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00001462 while b < n:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001463 print b,
1464 a, b = b, a+b
1465
1466def fib2(n): # return Fibonacci series up to n
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001467 result = []
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001468 a, b = 0, 1
Guido van Rossum16cd7f91994-10-06 10:29:26 +00001469 while b < n:
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001470 result.append(b)
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001471 a, b = b, a+b
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001472 return result
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001473\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001474%
Guido van Rossum4410c751991-06-04 20:22:18 +00001475Now enter the Python interpreter and import this module with the
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001476following command:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001477
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001478\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001479>>> import fibo
1480>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001481\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001482%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001483This does not enter the names of the functions defined in
1484{\tt fibo}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001485directly in the current symbol table; it only enters the module name
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001486{\tt fibo}
1487there.
1488Using the module name you can access the functions:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001489
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001490\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001491>>> fibo.fib(1000)
14921 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
1493>>> fibo.fib2(100)
1494[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Guido van Rossum6938f061994-08-01 12:22:53 +00001495>>> fibo.__name__
1496'fibo'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001497>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001498\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001499%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001500If you intend to use a function often you can assign it to a local name:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001501
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001502\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001503>>> fib = fibo.fib
1504>>> fib(500)
15051 1 2 3 5 8 13 21 34 55 89 144 233 377
1506>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001507\end{verbatim}\ecode
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001508
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001509\section{More on Modules}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001510
1511A module can contain executable statements as well as function
1512definitions.
1513These statements are intended to initialize the module.
1514They are executed only the
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001515{\em first}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001516time the module is imported somewhere.%
1517\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +00001518 In fact function definitions are also `statements' that are
1519 `executed'; the execution enters the function name in the
1520 module's global symbol table.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001521}
1522
1523Each module has its own private symbol table, which is used as the
1524global symbol table by all functions defined in the module.
1525Thus, the author of a module can use global variables in the module
1526without worrying about accidental clashes with a user's global
1527variables.
1528On the other hand, if you know what you are doing you can touch a
1529module's global variables with the same notation used to refer to its
1530functions,
1531{\tt modname.itemname}.
1532
1533Modules can import other modules.
1534It is customary but not required to place all
1535{\tt import}
1536statements at the beginning of a module (or script, for that matter).
1537The imported module names are placed in the importing module's global
1538symbol table.
1539
1540There is a variant of the
1541{\tt import}
1542statement that imports names from a module directly into the importing
1543module's symbol table.
1544For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001545
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001546\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001547>>> from fibo import fib, fib2
1548>>> fib(500)
15491 1 2 3 5 8 13 21 34 55 89 144 233 377
1550>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001551\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001552%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001553This does not introduce the module name from which the imports are taken
1554in the local symbol table (so in the example, {\tt fibo} is not
1555defined).
1556
1557There is even a variant to import all names that a module defines:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001558
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001559\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001560>>> from fibo import *
1561>>> fib(500)
15621 1 2 3 5 8 13 21 34 55 89 144 233 377
1563>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001564\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001565%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001566This imports all names except those beginning with an underscore
Guido van Rossum573805a1992-03-06 10:56:03 +00001567({\tt _}).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001568
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001569\section{Standard Modules}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001570
Guido van Rossum4410c751991-06-04 20:22:18 +00001571Python comes with a library of standard modules, described in a separate
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001572document (Python Library Reference). Some modules are built into the
1573interpreter; these provide access to operations that are not part of the
1574core of the language but are nevertheless built in, either for
1575efficiency or to provide access to operating system primitives such as
1576system calls. The set of such modules is a configuration option; e.g.,
1577the {\tt amoeba} module is only provided on systems that somehow support
1578Amoeba primitives. One particular module deserves some attention: {\tt
1579sys}, which is built into every Python interpreter. The variables {\tt
1580sys.ps1} and {\tt sys.ps2} define the strings used as primary and
1581secondary prompts:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001582
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001583\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001584>>> import sys
1585>>> sys.ps1
1586'>>> '
1587>>> sys.ps2
1588'... '
1589>>> sys.ps1 = 'C> '
1590C> print 'Yuck!'
1591Yuck!
1592C>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001593\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001594%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001595These two variables are only defined if the interpreter is in
1596interactive mode.
1597
1598The variable
1599{\tt sys.path}
1600is a list of strings that determine the interpreter's search path for
1601modules.
1602It is initialized to a default path taken from the environment variable
1603{\tt PYTHONPATH},
1604or from a built-in default if
1605{\tt PYTHONPATH}
1606is not set.
1607You can modify it using standard list operations, e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001608
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001609\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001610>>> import sys
1611>>> sys.path.append('/ufs/guido/lib/python')
1612>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001613\end{verbatim}\ecode
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001614
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001615\section{The {\tt dir()} function}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001616
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001617The built-in function {\tt dir} is used to find out which names a module
1618defines. It returns a sorted list of strings:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001619
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001620\bcode\begin{verbatim}
1621>>> import fibo, sys
1622>>> dir(fibo)
Guido van Rossum6938f061994-08-01 12:22:53 +00001623['__name__', 'fib', 'fib2']
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001624>>> dir(sys)
Guido van Rossum6938f061994-08-01 12:22:53 +00001625['__name__', 'argv', 'builtin_module_names', 'copyright', 'exit',
1626'maxint', 'modules', 'path', 'ps1', 'ps2', 'setprofile', 'settrace',
1627'stderr', 'stdin', 'stdout', 'version']
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001628>>>
1629\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001630%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001631Without arguments, {\tt dir()} lists the names you have defined currently:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001632
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001633\bcode\begin{verbatim}
1634>>> a = [1, 2, 3, 4, 5]
1635>>> import fibo, sys
1636>>> fib = fibo.fib
1637>>> dir()
Guido van Rossum6938f061994-08-01 12:22:53 +00001638['__name__', 'a', 'fib', 'fibo', 'sys']
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001639>>>
1640\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001641%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001642Note that it lists all types of names: variables, modules, functions, etc.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001643
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001644{\tt dir()} does not list the names of built-in functions and variables.
1645If you want a list of those, they are defined in the standard module
Guido van Rossum4bd023f1993-10-27 13:49:20 +00001646{\tt __builtin__}:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001647
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001648\bcode\begin{verbatim}
Guido van Rossum4bd023f1993-10-27 13:49:20 +00001649>>> import __builtin__
1650>>> dir(__builtin__)
Guido van Rossum6938f061994-08-01 12:22:53 +00001651['AccessError', 'AttributeError', 'ConflictError', 'EOFError', 'IOError',
1652'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt',
1653'MemoryError', 'NameError', 'None', 'OverflowError', 'RuntimeError',
1654'SyntaxError', 'SystemError', 'SystemExit', 'TypeError', 'ValueError',
1655'ZeroDivisionError', '__name__', 'abs', 'apply', 'chr', 'cmp', 'coerce',
1656'compile', 'dir', 'divmod', 'eval', 'execfile', 'filter', 'float',
1657'getattr', 'hasattr', 'hash', 'hex', 'id', 'input', 'int', 'len', 'long',
1658'map', 'max', 'min', 'oct', 'open', 'ord', 'pow', 'range', 'raw_input',
1659'reduce', 'reload', 'repr', 'round', 'setattr', 'str', 'type', 'xrange']
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001660>>>
1661\end{verbatim}\ecode
1662
Guido van Rossum5e0759d1992-08-07 16:06:24 +00001663
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001664\chapter{Output Formatting}
1665
1666So far we've encountered two ways of writing values: {\em expression
1667statements} and the {\tt print} statement. (A third way is using the
1668{\tt write} method of file objects; the standard output file can be
1669referenced as {\tt sys.stdout}. See the Library Reference for more
1670information on this.)
1671
1672Often you'll want more control over the formatting of your output than
1673simply printing space-separated values. The key to nice formatting in
1674Python is to do all the string handling yourself; using string slicing
1675and concatenation operations you can create any lay-out you can imagine.
1676The standard module {\tt string} contains some useful operations for
1677padding strings to a given column width; these will be discussed shortly.
Guido van Rossum6938f061994-08-01 12:22:53 +00001678Finally, the \code{\%} operator (modulo) with a string left argument
1679interprets this string as a C sprintf format string to be applied to the
1680right argument, and returns the string resulting from this formatting
1681operation.
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001682
1683One question remains, of course: how do you convert values to strings?
1684Luckily, Python has a way to convert any value to a string: just write
1685the value between reverse quotes (\verb/``/). Some examples:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001686
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001687\bcode\begin{verbatim}
1688>>> x = 10 * 3.14
1689>>> y = 200*200
1690>>> s = 'The value of x is ' + `x` + ', and y is ' + `y` + '...'
1691>>> print s
1692The value of x is 31.4, and y is 40000...
1693>>> # Reverse quotes work on other types besides numbers:
Guido van Rossum6938f061994-08-01 12:22:53 +00001694... p = [x, y]
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001695>>> ps = `p`
1696>>> ps
1697'[31.4, 40000]'
1698>>> # Converting a string adds string quotes and backslashes:
Guido van Rossum6938f061994-08-01 12:22:53 +00001699... hello = 'hello, world\n'
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001700>>> hellos = `hello`
1701>>> print hellos
1702'hello, world\012'
1703>>> # The argument of reverse quotes may be a tuple:
Guido van Rossume5f8b601995-01-04 19:12:49 +00001704... `x, y, ('spam', 'eggs')`
1705"(31.4, 40000, ('spam', 'eggs'))"
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001706>>>
1707\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001708%
Guido van Rossum6938f061994-08-01 12:22:53 +00001709Here are two ways to write a table of squares and cubes:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001710
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001711\bcode\begin{verbatim}
1712>>> import string
1713>>> for x in range(1, 11):
1714... print string.rjust(`x`, 2), string.rjust(`x*x`, 3),
1715... # Note trailing comma on previous line
1716... print string.rjust(`x*x*x`, 4)
1717...
1718 1 1 1
1719 2 4 8
1720 3 9 27
1721 4 16 64
1722 5 25 125
1723 6 36 216
1724 7 49 343
1725 8 64 512
1726 9 81 729
172710 100 1000
Guido van Rossum6938f061994-08-01 12:22:53 +00001728>>> for x in range(1,11):
1729... print '%2d %3d %4d' % (x, x*x, x*x*x)
1730...
1731 1 1 1
1732 2 4 8
1733 3 9 27
1734 4 16 64
1735 5 25 125
1736 6 36 216
1737 7 49 343
1738 8 64 512
1739 9 81 729
174010 100 1000
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001741>>>
1742\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001743%
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001744(Note that one space between each column was added by the way {\tt print}
1745works: it always adds spaces between its arguments.)
1746
1747This example demonstrates the function {\tt string.rjust()}, which
1748right-justifies a string in a field of a given width by padding it with
1749spaces on the left. There are similar functions {\tt string.ljust()}
1750and {\tt string.center()}. These functions do not write anything, they
1751just return a new string. If the input string is too long, they don't
1752truncate it, but return it unchanged; this will mess up your column
1753lay-out but that's usually better than the alternative, which would be
1754lying about a value. (If you really want truncation you can always add
1755a slice operation, as in {\tt string.ljust(x,~n)[0:n]}.)
1756
1757There is another function, {\tt string.zfill}, which pads a numeric
1758string on the left with zeros. It understands about plus and minus
Guido van Rossum6938f061994-08-01 12:22:53 +00001759signs:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001760
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001761\bcode\begin{verbatim}
1762>>> string.zfill('12', 5)
1763'00012'
1764>>> string.zfill('-3.14', 7)
1765'-003.14'
1766>>> string.zfill('3.14159265359', 5)
1767'3.14159265359'
1768>>>
1769\end{verbatim}\ecode
1770
Guido van Rossum5e0759d1992-08-07 16:06:24 +00001771
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001772\chapter{Errors and Exceptions}
1773
1774Until now error messages haven't been more than mentioned, but if you
1775have tried out the examples you have probably seen some. There are
1776(at least) two distinguishable kinds of errors: {\em syntax\ errors}
1777and {\em exceptions}.
1778
1779\section{Syntax Errors}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001780
1781Syntax errors, also known as parsing errors, are perhaps the most common
Guido van Rossum4410c751991-06-04 20:22:18 +00001782kind of complaint you get while you are still learning Python:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001783
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001784\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001785>>> while 1 print 'Hello world'
Guido van Rossum6938f061994-08-01 12:22:53 +00001786 File "<stdin>", line 1
1787 while 1 print 'Hello world'
1788 ^
1789SyntaxError: invalid syntax
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001790>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001791\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001792%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001793The parser repeats the offending line and displays a little `arrow'
1794pointing at the earliest point in the line where the error was detected.
1795The error is caused by (or at least detected at) the token
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001796{\em preceding}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001797the arrow: in the example, the error is detected at the keyword
1798{\tt print}, since a colon ({\tt :}) is missing before it.
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001799File name and line number are printed so you know where to look in case
1800the input came from a script.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001801
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001802\section{Exceptions}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001803
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001804Even if a statement or expression is syntactically correct, it may
1805cause an error when an attempt is made to execute it.
1806Errors detected during execution are called {\em exceptions} and are
1807not unconditionally fatal: you will soon learn how to handle them in
1808Python programs. Most exceptions are not handled by programs,
1809however, and result in error messages as shown here:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001810
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001811\bcode\small\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001812>>> 10 * (1/0)
Guido van Rossum3cbc16d1993-12-17 12:13:53 +00001813Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001814 File "<stdin>", line 1
Guido van Rossumb2c65561993-05-12 08:53:36 +00001815ZeroDivisionError: integer division or modulo
Guido van Rossume5f8b601995-01-04 19:12:49 +00001816>>> 4 + spam*3
Guido van Rossum6938f061994-08-01 12:22:53 +00001817Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001818 File "<stdin>", line 1
Guido van Rossume5f8b601995-01-04 19:12:49 +00001819NameError: spam
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001820>>> '2' + 2
Guido van Rossum6938f061994-08-01 12:22:53 +00001821Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001822 File "<stdin>", line 1
Guido van Rossumb2c65561993-05-12 08:53:36 +00001823TypeError: illegal argument type for built-in operation
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001824>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001825\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001826%
Guido van Rossumb2c65561993-05-12 08:53:36 +00001827The last line of the error message indicates what happened.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001828Exceptions come in different types, and the type is printed as part of
1829the message: the types in the example are
Guido van Rossumb2c65561993-05-12 08:53:36 +00001830{\tt ZeroDivisionError},
1831{\tt NameError}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001832and
Guido van Rossumb2c65561993-05-12 08:53:36 +00001833{\tt TypeError}.
1834The string printed as the exception type is the name of the built-in
1835name for the exception that occurred. This is true for all built-in
1836exceptions, but need not be true for user-defined exceptions (although
1837it is a useful convention).
1838Standard exception names are built-in identifiers (not reserved
1839keywords).
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001840
Guido van Rossumb2c65561993-05-12 08:53:36 +00001841The rest of the line is a detail whose interpretation depends on the
1842exception type; its meaning is dependent on the exception type.
1843
1844The preceding part of the error message shows the context where the
1845exception happened, in the form of a stack backtrace.
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001846In general it contains a stack backtrace listing source lines; however,
1847it will not display lines read from standard input.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001848
Guido van Rossumb2c65561993-05-12 08:53:36 +00001849The Python library reference manual lists the built-in exceptions and
1850their meanings.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001851
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001852\section{Handling Exceptions}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001853
1854It is possible to write programs that handle selected exceptions.
1855Look at the following example, which prints a table of inverses of
1856some floating point numbers:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001857
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001858\bcode\begin{verbatim}
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001859>>> numbers = [0.3333, 2.5, 0, 10]
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001860>>> for x in numbers:
1861... print x,
1862... try:
1863... print 1.0 / x
Guido van Rossumb2c65561993-05-12 08:53:36 +00001864... except ZeroDivisionError:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001865... print '*** has no inverse ***'
1866...
18670.3333 3.00030003
18682.5 0.4
18690 *** has no inverse ***
187010 0.1
1871>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001872\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001873%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001874The {\tt try} statement works as follows.
1875\begin{itemize}
1876\item
1877First, the
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001878{\em try\ clause}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001879(the statement(s) between the {\tt try} and {\tt except} keywords) is
1880executed.
1881\item
1882If no exception occurs, the
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001883{\em except\ clause}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001884is skipped and execution of the {\tt try} statement is finished.
1885\item
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001886If an exception occurs during execution of the try clause,
1887the rest of the clause is skipped. Then if
1888its type matches the exception named after the {\tt except} keyword,
1889the rest of the try clause is skipped, the except clause is executed,
1890and then execution continues after the {\tt try} statement.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001891\item
1892If an exception occurs which does not match the exception named in the
1893except clause, it is passed on to outer try statements; if no handler is
1894found, it is an
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001895{\em unhandled\ exception}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001896and execution stops with a message as shown above.
1897\end{itemize}
1898A {\tt try} statement may have more than one except clause, to specify
1899handlers for different exceptions.
1900At most one handler will be executed.
1901Handlers only handle exceptions that occur in the corresponding try
1902clause, not in other handlers of the same {\tt try} statement.
1903An except clause may name multiple exceptions as a parenthesized list,
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001904e.g.:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001905
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001906\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001907... except (RuntimeError, TypeError, NameError):
1908... pass
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001909\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001910%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001911The last except clause may omit the exception name(s), to serve as a
1912wildcard.
Guido van Rossumb2c65561993-05-12 08:53:36 +00001913Use this with extreme caution, since it is easy to mask a real
1914programming error in this way!
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001915
1916When an exception occurs, it may have an associated value, also known as
1917the exceptions's
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001918{\em argument}.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001919The presence and type of the argument depend on the exception type.
1920For exception types which have an argument, the except clause may
1921specify a variable after the exception name (or list) to receive the
1922argument's value, as follows:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001923
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001924\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001925>>> try:
Guido van Rossume5f8b601995-01-04 19:12:49 +00001926... spam()
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001927... except NameError, x:
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001928... print 'name', x, 'undefined'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001929...
Guido van Rossume5f8b601995-01-04 19:12:49 +00001930name spam undefined
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001931>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001932\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001933%
Guido van Rossumb2c65561993-05-12 08:53:36 +00001934If an exception has an argument, it is printed as the last part
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001935(`detail') of the message for unhandled exceptions.
1936
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001937Exception handlers don't just handle exceptions if they occur
1938immediately in the try clause, but also if they occur inside functions
1939that are called (even indirectly) in the try clause.
1940For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001941
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001942\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001943>>> def this_fails():
1944... x = 1/0
1945...
1946>>> try:
1947... this_fails()
Guido van Rossumb2c65561993-05-12 08:53:36 +00001948... except ZeroDivisionError, detail:
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001949... print 'Handling run-time error:', detail
1950...
Guido van Rossumb2c65561993-05-12 08:53:36 +00001951Handling run-time error: integer division or modulo
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001952>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001953\end{verbatim}\ecode
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001954
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001955\section{Raising Exceptions}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001956
1957The {\tt raise} statement allows the programmer to force a specified
1958exception to occur.
1959For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001960
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001961\bcode\begin{verbatim}
Guido van Rossumb2c65561993-05-12 08:53:36 +00001962>>> raise NameError, 'HiThere'
Guido van Rossum6938f061994-08-01 12:22:53 +00001963Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00001964 File "<stdin>", line 1
Guido van Rossumb2c65561993-05-12 08:53:36 +00001965NameError: HiThere
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001966>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001967\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001968%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001969The first argument to {\tt raise} names the exception to be raised.
1970The optional second argument specifies the exception's argument.
1971
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001972\section{User-defined Exceptions}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001973
1974Programs may name their own exceptions by assigning a string to a
1975variable.
1976For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001977
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001978\bcode\begin{verbatim}
Guido van Rossumb2c65561993-05-12 08:53:36 +00001979>>> my_exc = 'my_exc'
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001980>>> try:
1981... raise my_exc, 2*2
1982... except my_exc, val:
Guido van Rossum67fa1601991-04-23 14:14:57 +00001983... print 'My exception occurred, value:', val
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001984...
Guido van Rossum6938f061994-08-01 12:22:53 +00001985My exception occurred, value: 4
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001986>>> raise my_exc, 1
Guido van Rossum6938f061994-08-01 12:22:53 +00001987Traceback (innermost last):
1988 File "<stdin>", line 1
Guido van Rossumb2c65561993-05-12 08:53:36 +00001989my_exc: 1
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001990>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00001991\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00001992%
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001993Many standard modules use this to report errors that may occur in
1994functions they define.
1995
Guido van Rossum6fc178f1991-08-16 09:13:42 +00001996\section{Defining Clean-up Actions}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00001997
1998The {\tt try} statement has another optional clause which is intended to
1999define clean-up actions that must be executed under all circumstances.
2000For example:
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002001
Guido van Rossum5ce78f11991-01-25 13:27:18 +00002002\bcode\begin{verbatim}
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002003>>> try:
2004... raise KeyboardInterrupt
2005... finally:
2006... print 'Goodbye, world!'
2007...
2008Goodbye, world!
Guido van Rossum6938f061994-08-01 12:22:53 +00002009Traceback (innermost last):
Guido van Rossum2292b8e1991-01-23 16:31:24 +00002010 File "<stdin>", line 2
Guido van Rossumb2c65561993-05-12 08:53:36 +00002011KeyboardInterrupt
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002012>>>
Guido van Rossum5ce78f11991-01-25 13:27:18 +00002013\end{verbatim}\ecode
Guido van Rossuma8d754e1992-01-07 16:44:35 +00002014%
Guido van Rossumda8c3fd1992-08-09 13:55:25 +00002015A {\tt finally} clause is executed whether or not an exception has
2016occurred in the {\tt try} clause. When an exception has occurred, it
Guido van Rossum6938f061994-08-01 12:22:53 +00002017is re-raised after the {\tt finally} clause is executed. The
Guido van Rossumda8c3fd1992-08-09 13:55:25 +00002018{\tt finally} clause is also executed ``on the way out'' when the
2019{\tt try} statement is left via a {\tt break} or {\tt return}
2020statement.
2021
2022A {\tt try} statement must either have one or more {\tt except}
2023clauses or one {\tt finally} clause, but not both.
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00002024
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002025
2026\chapter{Classes}
2027
2028Python's class mechanism adds classes to the language with a minimum
2029of new syntax and semantics. It is a mixture of the class mechanisms
Guido van Rossum16d6e711994-08-08 12:30:22 +00002030found in \Cpp{} and Modula-3. As is true for modules, classes in Python
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002031do not put an absolute barrier between definition and user, but rather
2032rely on the politeness of the user not to ``break into the
2033definition.'' The most important features of classes are retained
2034with full power, however: the class inheritance mechanism allows
2035multiple base classes, a derived class can override any methods of its
2036base class(es), a method can call the method of a base class with the
2037same name. Objects can contain an arbitrary amount of private data.
2038
Guido van Rossum16d6e711994-08-08 12:30:22 +00002039In \Cpp{} terminology, all class members (including the data members) are
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002040{\em public}, and all member functions are {\em virtual}. There are
Guido van Rossum6938f061994-08-01 12:22:53 +00002041no special constructors or destructors. As in Modula-3, there are no
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002042shorthands for referencing the object's members from its methods: the
2043method function is declared with an explicit first argument
2044representing the object, which is provided implicitly by the call. As
2045in Smalltalk, classes themselves are objects, albeit in the wider
2046sense of the word: in Python, all data types are objects. This
Guido van Rossum16d6e711994-08-08 12:30:22 +00002047provides semantics for importing and renaming. But, just like in \Cpp{}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002048or Modula-3, built-in types cannot be used as base classes for
Guido van Rossum16d6e711994-08-08 12:30:22 +00002049extension by the user. Also, like in \Cpp{} but unlike in Modula-3, most
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002050built-in operators with special syntax (arithmetic operators,
Guido van Rossum6938f061994-08-01 12:22:53 +00002051subscripting etc.) can be redefined for class members.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002052
2053
2054\section{A word about terminology}
2055
2056Lacking universally accepted terminology to talk about classes, I'll
Guido van Rossum16d6e711994-08-08 12:30:22 +00002057make occasional use of Smalltalk and \Cpp{} terms. (I'd use Modula-3
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002058terms, since its object-oriented semantics are closer to those of
Guido van Rossum16d6e711994-08-08 12:30:22 +00002059Python than \Cpp{}, but I expect that few readers have heard of it...)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002060
2061I also have to warn you that there's a terminological pitfall for
2062object-oriented readers: the word ``object'' in Python does not
Guido van Rossum16d6e711994-08-08 12:30:22 +00002063necessarily mean a class instance. Like \Cpp{} and Modula-3, and unlike
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002064Smalltalk, not all types in Python are classes: the basic built-in
2065types like integers and lists aren't, and even somewhat more exotic
2066types like files aren't. However, {\em all} Python types share a little
2067bit of common semantics that is best described by using the word
2068object.
2069
2070Objects have individuality, and multiple names (in multiple scopes)
2071can be bound to the same object. This is known as aliasing in other
2072languages. This is usually not appreciated on a first glance at
2073Python, and can be safely ignored when dealing with immutable basic
2074types (numbers, strings, tuples). However, aliasing has an
Guido van Rossum6938f061994-08-01 12:22:53 +00002075(intended!) effect on the semantics of Python code involving mutable
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002076objects such as lists, dictionaries, and most types representing
2077entities outside the program (files, windows, etc.). This is usually
2078used to the benefit of the program, since aliases behave like pointers
2079in some respects. For example, passing an object is cheap since only
2080a pointer is passed by the implementation; and if a function modifies
2081an object passed as an argument, the caller will see the change --- this
2082obviates the need for two different argument passing mechanisms as in
2083Pascal.
2084
2085
2086\section{Python scopes and name spaces}
2087
2088Before introducing classes, I first have to tell you something about
2089Python's scope rules. Class definitions play some neat tricks with
2090name spaces, and you need to know how scopes and name spaces work to
2091fully understand what's going on. Incidentally, knowledge about this
2092subject is useful for any advanced Python programmer.
2093
2094Let's begin with some definitions.
2095
2096A {\em name space} is a mapping from names to objects. Most name
2097spaces are currently implemented as Python dictionaries, but that's
2098normally not noticeable in any way (except for performance), and it
2099may change in the future. Examples of name spaces are: the set of
2100built-in names (functions such as \verb\abs()\, and built-in exception
2101names); the global names in a module; and the local names in a
2102function invocation. In a sense the set of attributes of an object
Guido van Rossum16cd7f91994-10-06 10:29:26 +00002103also form a name space. The important thing to know about name
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002104spaces is that there is absolutely no relation between names in
2105different name spaces; for instance, two different modules may both
2106define a function ``maximize'' without confusion --- users of the
2107modules must prefix it with the module name.
2108
2109By the way, I use the word {\em attribute} for any name following a
2110dot --- for example, in the expression \verb\z.real\, \verb\real\ is
2111an attribute of the object \verb\z\. Strictly speaking, references to
2112names in modules are attribute references: in the expression
2113\verb\modname.funcname\, \verb\modname\ is a module object and
2114\verb\funcname\ is an attribute of it. In this case there happens to
2115be a straightforward mapping between the module's attributes and the
2116global names defined in the module: they share the same name space!%
2117\footnote{
Guido van Rossum6938f061994-08-01 12:22:53 +00002118 Except for one thing. Module objects have a secret read-only
2119 attribute called {\tt __dict__} which returns the dictionary
2120 used to implement the module's name space; the name
2121 {\tt __dict__} is an attribute but not a global name.
2122 Obviously, using this violates the abstraction of name space
2123 implementation, and should be restricted to things like
2124 post-mortem debuggers...
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002125}
2126
2127Attributes may be read-only or writable. In the latter case,
2128assignment to attributes is possible. Module attributes are writable:
2129you can write \verb\modname.the_answer = 42\. Writable attributes may
2130also be deleted with the del statement, e.g.
2131\verb\del modname.the_answer\.
2132
2133Name spaces are created at different moments and have different
2134lifetimes. The name space containing the built-in names is created
2135when the Python interpreter starts up, and is never deleted. The
2136global name space for a module is created when the module definition
2137is read in; normally, module name spaces also last until the
2138interpreter quits. The statements executed by the top-level
2139invocation of the interpreter, either read from a script file or
2140interactively, are considered part of a module called \verb\__main__\,
2141so they have their own global name space. (The built-in names
Guido van Rossum4bd023f1993-10-27 13:49:20 +00002142actually also live in a module; this is called \verb\__builtin__\.)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002143
2144The local name space for a function is created when the function is
2145called, and deleted when the function returns or raises an exception
2146that is not handled within the function. (Actually, forgetting would
2147be a better way to describe what actually happens.) Of course,
2148recursive invocations each have their own local name space.
2149
2150A {\em scope} is a textual region of a Python program where a name space
2151is directly accessible. ``Directly accessible'' here means that an
2152unqualified reference to a name attempts to find the name in the name
2153space.
2154
2155Although scopes are determined statically, they are used dynamically.
2156At any time during execution, exactly three nested scopes are in use
2157(i.e., exactly three name spaces are directly accessible): the
2158innermost scope, which is searched first, contains the local names,
2159the middle scope, searched next, contains the current module's global
2160names, and the outermost scope (searched last) is the name space
2161containing built-in names.
2162
2163Usually, the local scope references the local names of the (textually)
Guido van Rossum96628a91995-04-10 11:34:00 +00002164current function. Outside of functions, the local scope references
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002165the same name space as the global scope: the module's name space.
2166Class definitions place yet another name space in the local scope.
2167
2168It is important to realize that scopes are determined textually: the
2169global scope of a function defined in a module is that module's name
2170space, no matter from where or by what alias the function is called.
2171On the other hand, the actual search for names is done dynamically, at
Guido van Rossum96628a91995-04-10 11:34:00 +00002172run time --- however, the language definition is evolving towards
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002173static name resolution, at ``compile'' time, so don't rely on dynamic
2174name resolution! (In fact, local variables are already determined
2175statically.)
2176
2177A special quirk of Python is that assignments always go into the
2178innermost scope. Assignments do not copy data --- they just
2179bind names to objects. The same is true for deletions: the statement
2180\verb\del x\ removes the binding of x from the name space referenced by the
2181local scope. In fact, all operations that introduce new names use the
2182local scope: in particular, import statements and function definitions
2183bind the module or function name in the local scope. (The
2184\verb\global\ statement can be used to indicate that particular
2185variables live in the global scope.)
2186
2187
2188\section{A first look at classes}
2189
2190Classes introduce a little bit of new syntax, three new object types,
2191and some new semantics.
2192
2193
2194\subsection{Class definition syntax}
2195
2196The simplest form of class definition looks like this:
2197
2198\begin{verbatim}
2199 class ClassName:
2200 <statement-1>
2201 .
2202 .
2203 .
2204 <statement-N>
2205\end{verbatim}
2206
2207Class definitions, like function definitions (\verb\def\ statements)
2208must be executed before they have any effect. (You could conceivably
2209place a class definition in a branch of an \verb\if\ statement, or
2210inside a function.)
2211
2212In practice, the statements inside a class definition will usually be
2213function definitions, but other statements are allowed, and sometimes
2214useful --- we'll come back to this later. The function definitions
2215inside a class normally have a peculiar form of argument list,
2216dictated by the calling conventions for methods --- again, this is
2217explained later.
2218
2219When a class definition is entered, a new name space is created, and
2220used as the local scope --- thus, all assignments to local variables
2221go into this new name space. In particular, function definitions bind
2222the name of the new function here.
2223
2224When a class definition is left normally (via the end), a {\em class
2225object} is created. This is basically a wrapper around the contents
2226of the name space created by the class definition; we'll learn more
2227about class objects in the next section. The original local scope
2228(the one in effect just before the class definitions was entered) is
2229reinstated, and the class object is bound here to class name given in
2230the class definition header (ClassName in the example).
2231
2232
2233\subsection{Class objects}
2234
2235Class objects support two kinds of operations: attribute references
2236and instantiation.
2237
2238{\em Attribute references} use the standard syntax used for all
2239attribute references in Python: \verb\obj.name\. Valid attribute
2240names are all the names that were in the class's name space when the
2241class object was created. So, if the class definition looked like
2242this:
2243
2244\begin{verbatim}
2245 class MyClass:
2246 i = 12345
2247 def f(x):
2248 return 'hello world'
2249\end{verbatim}
2250
2251then \verb\MyClass.i\ and \verb\MyClass.f\ are valid attribute
2252references, returning an integer and a function object, respectively.
2253Class attributes can also be assigned to, so you can change the
2254value of \verb\MyClass.i\ by assignment.
2255
2256Class {\em instantiation} uses function notation. Just pretend that
2257the class object is a parameterless function that returns a new
2258instance of the class. For example, (assuming the above class):
2259
2260\begin{verbatim}
2261 x = MyClass()
2262\end{verbatim}
2263
2264creates a new {\em instance} of the class and assigns this object to
2265the local variable \verb\x\.
2266
2267
2268\subsection{Instance objects}
2269
2270Now what can we do with instance objects? The only operations
2271understood by instance objects are attribute references. There are
2272two kinds of valid attribute names.
2273
2274The first I'll call {\em data attributes}. These correspond to
Guido van Rossum16d6e711994-08-08 12:30:22 +00002275``instance variables'' in Smalltalk, and to ``data members'' in \Cpp{}.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002276Data attributes need not be declared; like local variables, they
2277spring into existence when they are first assigned to. For example,
2278if \verb\x\ in the instance of \verb\MyClass\ created above, the
2279following piece of code will print the value 16, without leaving a
2280trace:
2281
2282\begin{verbatim}
2283 x.counter = 1
2284 while x.counter < 10:
2285 x.counter = x.counter * 2
2286 print x.counter
2287 del x.counter
2288\end{verbatim}
2289
2290The second kind of attribute references understood by instance objects
2291are {\em methods}. A method is a function that ``belongs to'' an
2292object. (In Python, the term method is not unique to class instances:
2293other object types can have methods as well, e.g., list objects have
2294methods called append, insert, remove, sort, and so on. However,
2295below, we'll use the term method exclusively to mean methods of class
2296instance objects, unless explicitly stated otherwise.)
2297
2298Valid method names of an instance object depend on its class. By
2299definition, all attributes of a class that are (user-defined) function
2300objects define corresponding methods of its instances. So in our
2301example, \verb\x.f\ is a valid method reference, since
2302\verb\MyClass.f\ is a function, but \verb\x.i\ is not, since
2303\verb\MyClass.i\ is not. But \verb\x.f\ is not the
2304same thing as \verb\MyClass.f\ --- it is a {\em method object}, not a
2305function object.
2306
2307
2308\subsection{Method objects}
2309
2310Usually, a method is called immediately, e.g.:
2311
2312\begin{verbatim}
2313 x.f()
2314\end{verbatim}
2315
2316In our example, this will return the string \verb\'hello world'\.
2317However, it is not necessary to call a method right away: \verb\x.f\
2318is a method object, and can be stored away and called at a later
2319moment, for example:
2320
2321\begin{verbatim}
2322 xf = x.f
2323 while 1:
2324 print xf()
2325\end{verbatim}
2326
2327will continue to print \verb\hello world\ until the end of time.
2328
2329What exactly happens when a method is called? You may have noticed
2330that \verb\x.f()\ was called without an argument above, even though
2331the function definition for \verb\f\ specified an argument. What
2332happened to the argument? Surely Python raises an exception when a
2333function that requires an argument is called without any --- even if
2334the argument isn't actually used...
2335
2336Actually, you may have guessed the answer: the special thing about
2337methods is that the object is passed as the first argument of the
2338function. In our example, the call \verb\x.f()\ is exactly equivalent
2339to \verb\MyClass.f(x)\. In general, calling a method with a list of
2340{\em n} arguments is equivalent to calling the corresponding function
2341with an argument list that is created by inserting the method's object
2342before the first argument.
2343
2344If you still don't understand how methods work, a look at the
2345implementation can perhaps clarify matters. When an instance
2346attribute is referenced that isn't a data attribute, its class is
2347searched. If the name denotes a valid class attribute that is a
2348function object, a method object is created by packing (pointers to)
2349the instance object and the function object just found together in an
2350abstract object: this is the method object. When the method object is
2351called with an argument list, it is unpacked again, a new argument
2352list is constructed from the instance object and the original argument
2353list, and the function object is called with this new argument list.
2354
2355
2356\section{Random remarks}
2357
2358
2359[These should perhaps be placed more carefully...]
2360
2361
2362Data attributes override method attributes with the same name; to
2363avoid accidental name conflicts, which may cause hard-to-find bugs in
2364large programs, it is wise to use some kind of convention that
2365minimizes the chance of conflicts, e.g., capitalize method names,
2366prefix data attribute names with a small unique string (perhaps just
Guido van Rossum6938f061994-08-01 12:22:53 +00002367an underscore), or use verbs for methods and nouns for data attributes.
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002368
2369
2370Data attributes may be referenced by methods as well as by ordinary
2371users (``clients'') of an object. In other words, classes are not
2372usable to implement pure abstract data types. In fact, nothing in
2373Python makes it possible to enforce data hiding --- it is all based
2374upon convention. (On the other hand, the Python implementation,
2375written in C, can completely hide implementation details and control
2376access to an object if necessary; this can be used by extensions to
2377Python written in C.)
2378
2379
2380Clients should use data attributes with care --- clients may mess up
2381invariants maintained by the methods by stamping on their data
2382attributes. Note that clients may add data attributes of their own to
2383an instance object without affecting the validity of the methods, as
2384long as name conflicts are avoided --- again, a naming convention can
2385save a lot of headaches here.
2386
2387
2388There is no shorthand for referencing data attributes (or other
2389methods!) from within methods. I find that this actually increases
2390the readability of methods: there is no chance of confusing local
2391variables and instance variables when glancing through a method.
2392
2393
2394Conventionally, the first argument of methods is often called
2395\verb\self\. This is nothing more than a convention: the name
2396\verb\self\ has absolutely no special meaning to Python. (Note,
2397however, that by not following the convention your code may be less
2398readable by other Python programmers, and it is also conceivable that
2399a {\em class browser} program be written which relies upon such a
2400convention.)
2401
2402
2403Any function object that is a class attribute defines a method for
2404instances of that class. It is not necessary that the function
2405definition is textually enclosed in the class definition: assigning a
2406function object to a local variable in the class is also ok. For
2407example:
2408
2409\begin{verbatim}
2410 # Function defined outside the class
2411 def f1(self, x, y):
2412 return min(x, x+y)
2413
2414 class C:
2415 f = f1
2416 def g(self):
2417 return 'hello world'
2418 h = g
2419\end{verbatim}
2420
2421Now \verb\f\, \verb\g\ and \verb\h\ are all attributes of class
2422\verb\C\ that refer to function objects, and consequently they are all
2423methods of instances of \verb\C\ --- \verb\h\ being exactly equivalent
2424to \verb\g\. Note that this practice usually only serves to confuse
2425the reader of a program.
2426
2427
2428Methods may call other methods by using method attributes of the
2429\verb\self\ argument, e.g.:
2430
2431\begin{verbatim}
2432 class Bag:
2433 def empty(self):
2434 self.data = []
2435 def add(self, x):
2436 self.data.append(x)
2437 def addtwice(self, x):
Guido van Rossum084b0b21992-08-14 09:19:56 +00002438 self.add(x)
2439 self.add(x)
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002440\end{verbatim}
2441
2442
2443The instantiation operation (``calling'' a class object) creates an
2444empty object. Many classes like to create objects in a known initial
Guido van Rossumca3f6c81994-10-06 14:08:53 +00002445state. Therefore a class may define a special method named
2446\verb\__init__\, like this:
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002447
Guido van Rossum6938f061994-08-01 12:22:53 +00002448\begin{verbatim}
2449 def __init__(self):
2450 self.empty()
2451\end{verbatim}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002452
Guido van Rossum6938f061994-08-01 12:22:53 +00002453When a class defines an \verb\__init__\ method, class instantiation
2454automatically invokes \verb\__init__\ for the newly-created class
2455instance. So in the \verb\Bag\ example, a new and initialized instance
2456can be obtained by:
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002457
Guido van Rossum6938f061994-08-01 12:22:53 +00002458\begin{verbatim}
2459 x = Bag()
2460\end{verbatim}
2461
2462Of course, the \verb\__init__\ method may have arguments for greater
2463flexibility. In that case, arguments given to the class instantiation
2464operator are passed on to \verb\__init__\. For example,
2465
2466\bcode\begin{verbatim}
2467>>> class Complex:
2468... def __init__(self, realpart, imagpart):
2469... self.r = realpart
2470... self.i = imagpart
2471...
2472>>> x = Complex(3.0,-4.5)
2473>>> x.r, x.i
2474(3.0, -4.5)
2475>>>
2476\end{verbatim}\ecode
2477%
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002478Methods may reference global names in the same way as ordinary
2479functions. The global scope associated with a method is the module
2480containing the class definition. (The class itself is never used as a
2481global scope!) While one rarely encounters a good reason for using
2482global data in a method, there are many legitimate uses of the global
2483scope: for one thing, functions and modules imported into the global
2484scope can be used by methods, as well as functions and classes defined
2485in it. Usually, the class containing the method is itself defined in
2486this global scope, and in the next section we'll find some good
2487reasons why a method would want to reference its own class!
2488
2489
2490\section{Inheritance}
2491
2492Of course, a language feature would not be worthy of the name ``class''
2493without supporting inheritance. The syntax for a derived class
2494definition looks as follows:
2495
2496\begin{verbatim}
2497 class DerivedClassName(BaseClassName):
2498 <statement-1>
2499 .
2500 .
2501 .
2502 <statement-N>
2503\end{verbatim}
2504
2505The name \verb\BaseClassName\ must be defined in a scope containing
2506the derived class definition. Instead of a base class name, an
2507expression is also allowed. This is useful when the base class is
2508defined in another module, e.g.,
2509
2510\begin{verbatim}
2511 class DerivedClassName(modname.BaseClassName):
2512\end{verbatim}
2513
2514Execution of a derived class definition proceeds the same as for a
2515base class. When the class object is constructed, the base class is
2516remembered. This is used for resolving attribute references: if a
2517requested attribute is not found in the class, it is searched in the
2518base class. This rule is applied recursively if the base class itself
2519is derived from some other class.
2520
2521There's nothing special about instantiation of derived classes:
2522\verb\DerivedClassName()\ creates a new instance of the class. Method
2523references are resolved as follows: the corresponding class attribute
2524is searched, descending down the chain of base classes if necessary,
2525and the method reference is valid if this yields a function object.
2526
2527Derived classes may override methods of their base classes. Because
2528methods have no special privileges when calling other methods of the
2529same object, a method of a base class that calls another method
2530defined in the same base class, may in fact end up calling a method of
Guido van Rossum16d6e711994-08-08 12:30:22 +00002531a derived class that overrides it. (For \Cpp{} programmers: all methods
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002532in Python are ``virtual functions''.)
2533
2534An overriding method in a derived class may in fact want to extend
2535rather than simply replace the base class method of the same name.
2536There is a simple way to call the base class method directly: just
2537call \verb\BaseClassName.methodname(self, arguments)\. This is
2538occasionally useful to clients as well. (Note that this only works if
2539the base class is defined or imported directly in the global scope.)
2540
2541
2542\subsection{Multiple inheritance}
2543
Guido van Rossum6938f061994-08-01 12:22:53 +00002544Python supports a limited form of multiple inheritance as well. A
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002545class definition with multiple base classes looks as follows:
2546
2547\begin{verbatim}
2548 class DerivedClassName(Base1, Base2, Base3):
2549 <statement-1>
2550 .
2551 .
2552 .
2553 <statement-N>
2554\end{verbatim}
2555
2556The only rule necessary to explain the semantics is the resolution
2557rule used for class attribute references. This is depth-first,
2558left-to-right. Thus, if an attribute is not found in
2559\verb\DerivedClassName\, it is searched in \verb\Base1\, then
2560(recursively) in the base classes of \verb\Base1\, and only if it is
2561not found there, it is searched in \verb\Base2\, and so on.
2562
Guido van Rossum95cd2ef1992-12-08 14:37:55 +00002563(To some people breadth first---searching \verb\Base2\ and
2564\verb\Base3\ before the base classes of \verb\Base1\---looks more
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002565natural. However, this would require you to know whether a particular
2566attribute of \verb\Base1\ is actually defined in \verb\Base1\ or in
2567one of its base classes before you can figure out the consequences of
2568a name conflict with an attribute of \verb\Base2\. The depth-first
2569rule makes no differences between direct and inherited attributes of
2570\verb\Base1\.)
2571
2572It is clear that indiscriminate use of multiple inheritance is a
2573maintenance nightmare, given the reliance in Python on conventions to
2574avoid accidental name conflicts. A well-known problem with multiple
2575inheritance is a class derived from two classes that happen to have a
2576common base class. While it is easy enough to figure out what happens
2577in this case (the instance will have a single copy of ``instance
2578variables'' or data attributes used by the common base class), it is
2579not clear that these semantics are in any way useful.
2580
2581
2582\section{Odds and ends}
2583
2584Sometimes it is useful to have a data type similar to the Pascal
2585``record'' or C ``struct'', bundling together a couple of named data
2586items. An empty class definition will do nicely, e.g.:
2587
2588\begin{verbatim}
2589 class Employee:
2590 pass
2591
2592 john = Employee() # Create an empty employee record
2593
2594 # Fill the fields of the record
2595 john.name = 'John Doe'
2596 john.dept = 'computer lab'
2597 john.salary = 1000
2598\end{verbatim}
2599
2600
2601A piece of Python code that expects a particular abstract data type
2602can often be passed a class that emulates the methods of that data
2603type instead. For instance, if you have a function that formats some
2604data from a file object, you can define a class with methods
2605\verb\read()\ and \verb\readline()\ that gets the data from a string
2606buffer instead, and pass it as an argument. (Unfortunately, this
2607technique has its limitations: a class can't define operations that
2608are accessed by special syntax such as sequence subscripting or
2609arithmetic operators, and assigning such a ``pseudo-file'' to
2610\verb\sys.stdin\ will not cause the interpreter to read further input
2611from it.)
2612
2613
2614Instance method objects have attributes, too: \verb\m.im_self\ is the
2615object of which the method is an instance, and \verb\m.im_func\ is the
2616function object corresponding to the method.
2617
2618
Guido van Rossum6938f061994-08-01 12:22:53 +00002619\chapter{Recent Additions}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00002620
Guido van Rossum6938f061994-08-01 12:22:53 +00002621Python is an evolving language. Since this tutorial was last
2622thoroughly revised, several new features have been added to the
2623language. While ideally I should revise the tutorial to incorporate
2624them in the mainline of the text, lack of time currently requires me
Guido van Rossum16cd7f91994-10-06 10:29:26 +00002625to take a more modest approach. In this chapter I will briefly list the
Guido van Rossum6938f061994-08-01 12:22:53 +00002626most important improvements to the language and how you can use them
2627to your benefit.
2628
2629\section{The Last Printed Expression}
2630
2631In interactive mode, the last printed expression is assigned to the
Guido van Rossum194e57c1995-02-15 15:51:38 +00002632variable \code{_}. This means that when you are using Python as a
Guido van Rossum6938f061994-08-01 12:22:53 +00002633desk calculator, it is somewhat easier to continue calculations, for
2634example:
2635
2636\begin{verbatim}
2637 >>> tax = 17.5 / 100
2638 >>> price = 3.50
2639 >>> price * tax
2640 0.6125
2641 >>> price + _
2642 4.1125
2643 >>> round(_, 2)
2644 4.11
2645 >>>
2646\end{verbatim}
2647
Guido van Rossum194e57c1995-02-15 15:51:38 +00002648For reasons too embarrassing to explain, this variable is implemented
2649as a built-in (living in the module \code{__builtin__}), so it should
2650be treated as read-only by the user. I.e. don't explicitly assign a
2651value to it --- you would create an independent local variable with
2652the same name masking the built-in variable with its magic behavior.
2653
Guido van Rossum6938f061994-08-01 12:22:53 +00002654\section{String Literals}
2655
2656\subsection{Double Quotes}
2657
2658Python can now also use double quotes to surround string literals,
Guido van Rossum194e57c1995-02-15 15:51:38 +00002659e.g. \verb\"this doesn't hurt a bit"\. There is no semantic
2660difference between strings surrounded by single or double quotes.
Guido van Rossum6938f061994-08-01 12:22:53 +00002661
2662\subsection{Continuation Of String Literals}
2663
2664String literals can span multiple lines by escaping newlines with
2665backslashes, e.g.
2666
2667\begin{verbatim}
2668 hello = "This is a rather long string containing\n\
2669 several lines of text just as you would do in C.\n\
2670 Note that whitespace at the beginning of the line is\
2671 significant.\n"
2672 print hello
2673\end{verbatim}
2674
2675which would print the following:
2676\begin{verbatim}
2677 This is a rather long string containing
2678 several lines of text just as you would do in C.
2679 Note that whitespace at the beginning of the line is significant.
2680\end{verbatim}
2681
2682\subsection{Triple-quoted strings}
2683
2684In some cases, when you need to include really long strings (e.g.
2685containing several paragraphs of informational text), it is annoying
2686that you have to terminate each line with \verb@\n\@, especially if
2687you would like to reformat the text occasionally with a powerful text
2688editor like Emacs. For such situations, ``triple-quoted'' strings can
2689be used, e.g.
2690
2691\begin{verbatim}
2692 hello = """
2693
2694 This string is bounded by triple double quotes (3 times ").
Guido van Rossum194e57c1995-02-15 15:51:38 +00002695 Unescaped newlines in the string are retained, though \
Guido van Rossum6938f061994-08-01 12:22:53 +00002696 it is still possible\nto use all normal escape sequences.
2697
2698 Whitespace at the beginning of a line is
2699 significant. If you need to include three opening quotes
2700 you have to escape at least one of them, e.g. \""".
2701
2702 This string ends in a newline.
2703 """
2704\end{verbatim}
2705
Guido van Rossum194e57c1995-02-15 15:51:38 +00002706Triple-quoted strings can be surrounded by three single quotes as
2707well, again without semantic difference.
Guido van Rossum6938f061994-08-01 12:22:53 +00002708
2709\subsection{String Literal Juxtaposition}
2710
2711One final twist: you can juxtapose multiple string literals. Two or
2712more adjacent string literals (but not arbitrary expressions!)
2713separated only by whitespace will be concatenated (without intervening
2714whitespace) into a single string object at compile time. This makes
2715it possible to continue a long string on the next line without
2716sacrificing indentation or performance, unlike the use of the string
2717concatenation operator \verb\+\ or the continuation of the literal
2718itself on the next line (since leading whitespace is significant
2719inside all types of string literals). Note that this feature, like
2720all string features except triple-quoted strings, is borrowed from
2721Standard C.
2722
2723\section{The Formatting Operator}
2724
2725\subsection{Basic Usage}
2726
2727The chapter on output formatting is really out of date: there is now
2728an almost complete interface to C-style printf formats. This is done
2729by overloading the modulo operator (\verb\%\) for a left operand
2730which is a string, e.g.
2731
2732\begin{verbatim}
2733 >>> import math
2734 >>> print 'The value of PI is approximately %5.3f.' % math.pi
2735 The value of PI is approximately 3.142.
2736 >>>
2737\end{verbatim}
2738
2739If there is more than one format in the string you pass a tuple as
2740right operand, e.g.
2741
2742\begin{verbatim}
2743 >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
2744 >>> for name, phone in table.items():
2745 ... print '%-10s ==> %10d' % (name, phone)
2746 ...
2747 Jack ==> 4098
2748 Dcab ==> 8637678
2749 Sjoerd ==> 4127
2750 >>>
2751\end{verbatim}
2752
2753Most formats work exactly as in C and require that you pass the proper
2754type (however, if you don't you get an exception, not a core dump).
2755The \verb\%s\ format is more relaxed: if the corresponding argument is
2756not a string object, it is converted to string using the \verb\str()\
2757built-in function. Using \verb\*\ to pass the width or precision in
2758as a separate (integer) argument is supported. The C formats
2759\verb\%n\ and \verb\%p\ are not supported.
2760
2761\subsection{Referencing Variables By Name}
2762
2763If you have a really long format string that you don't want to split
2764up, it would be nice if you could reference the variables to be
2765formatted by name instead of by position. This can be done by using
2766an extension of C formats using the form \verb\%(name)format\, e.g.
2767
2768\begin{verbatim}
2769 >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
2770 >>> print 'Jack: %(Jack)d; Sjoerd: %(Sjoerd)d; Dcab: %(Dcab)d' % table
2771 Jack: 4098; Sjoerd: 4127; Dcab: 8637678
2772 >>>
2773\end{verbatim}
2774
2775This is particularly useful in combination with the new built-in
2776\verb\vars()\ function, which returns a dictionary containing all
2777local variables.
2778
2779\section{Optional Function Arguments}
2780
2781It is now possible to define functions with a variable number of
2782arguments. There are two forms, which can be combined.
2783
2784\subsection{Default Argument Values}
2785
2786The most useful form is to specify a default value for one or more
2787arguments. This creates a function that can be called with fewer
2788arguments than it is defined, e.g.
2789
2790\begin{verbatim}
2791 def ask_ok(prompt, retries = 4, complaint = 'Yes or no, please!'):
2792 while 1:
2793 ok = raw_input(prompt)
2794 if ok in ('y', 'ye', 'yes'): return 1
2795 if ok in ('n', 'no', 'nop', 'nope'): return 0
2796 retries = retries - 1
2797 if retries < 0: raise IOError, 'refusenik user'
2798 print complaint
2799\end{verbatim}
2800
2801This function can be called either like this:
2802\verb\ask_ok('Do you really want to quit?')\ or like this:
2803\verb\ask_ok('OK to overwrite the file?', 2)\.
2804
2805The default values are evaluated at the point of function definition
2806in the {\em defining} scope, so that e.g.
2807
2808\begin{verbatim}
2809 i = 5
2810 def f(arg = i): print arg
2811 i = 6
2812 f()
2813\end{verbatim}
2814
2815will print \verb\5\.
2816
2817\subsection{Arbitrary Argument Lists}
2818
2819It is also possible to specify that a function can be called with an
2820arbitrary number of arguments. These arguments will be wrapped up in
2821a tuple. Before the variable number of arguments, zero or more normal
2822arguments may occur, e.g.
2823
2824\begin{verbatim}
2825 def fprintf(file, format, *args):
2826 file.write(format % args)
2827\end{verbatim}
2828
2829This feature may be combined with the previous, e.g.
2830
2831\begin{verbatim}
2832 def but_is_it_useful(required, optional = None, *remains):
2833 print "I don't know"
2834\end{verbatim}
2835
2836\section{Lambda And Functional Programming Tools}
2837
2838\subsection{Lambda Forms}
2839
Guido van Rossum16d6e711994-08-08 12:30:22 +00002840By popular demand, a few features commonly found in functional
Guido van Rossum6938f061994-08-01 12:22:53 +00002841programming languages and Lisp have been added to Python. With the
2842\verb\lambda\ keyword, small anonymous functions can be created.
2843Here's a function that returns the sum of its two arguments:
2844\verb\lambda a, b: a+b\. Lambda forms can be used wherever function
2845objects are required. They are syntactically restricted to a single
2846expression. Semantically, they are just syntactic sugar for a normal
2847function definition. Like nested function definitions, lambda forms
2848cannot reference variables from the containing scope, but this can be
2849overcome through the judicious use of default argument values, e.g.
2850
2851\begin{verbatim}
2852 def make_incrementor(n):
Guido van Rossumc1be9d51994-08-30 12:08:58 +00002853 return lambda x, incr=n: x+incr
Guido van Rossum6938f061994-08-01 12:22:53 +00002854\end{verbatim}
2855
2856\subsection{Map, Reduce and Filter}
2857
2858Three new built-in functions on sequences are good candidate to pass
2859lambda forms.
2860
2861\subsubsection{Map.}
2862
2863\verb\map(function, sequence)\ calls \verb\function(item)\ for each of
2864the sequence's items and returns a list of the return values. For
2865example, to compute some cubes:
2866
2867\begin{verbatim}
2868 >>> map(lambda x: x*x*x, range(1, 11))
2869 [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
2870 >>>
2871\end{verbatim}
2872
2873More than one sequence may be passed; the function must then have as
2874many arguments as there are sequences and is called with the
2875corresponding item from each sequence (or \verb\None\ if some sequence
2876is shorter than another). If \verb\None\ is passed for the function,
2877a function returning its argument(s) is substituted.
2878
2879Combining these two special cases, we see that
2880\verb\map(None, list1, list2)\ is a convenient way of turning a pair
2881of lists into a list of pairs. For example:
2882
2883\begin{verbatim}
2884 >>> seq = range(8)
2885 >>> map(None, seq, map(lambda x: x*x, seq))
2886 [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49)]
2887 >>>
2888\end{verbatim}
2889
2890\subsubsection{Filter.}
2891
2892\verb\filter(function, sequence)\ returns a sequence (of the same
2893type, if possible) consisting of those items from the sequence for
2894which \verb\function(item)\ is true. For example, to compute some
2895primes:
2896
2897\begin{verbatim}
2898 >>> filter(lambda x: x%2 != 0 and x%3 != 0, range(2, 25))
2899 [5, 7, 11, 13, 17, 19, 23]
2900 >>>
2901\end{verbatim}
2902
2903\subsubsection{Reduce.}
2904
2905\verb\reduce(function, sequence)\ returns a single value constructed
2906by calling the (binary) function on the first two items of the
2907sequence, then on the result and the next item, and so on. For
2908example, to compute the sum of the numbers 1 through 10:
2909
2910\begin{verbatim}
2911 >>> reduce(lambda x, y: x+y, range(1, 11))
2912 55
2913 >>>
2914\end{verbatim}
2915
2916If there's only one item in the sequence, its value is returned; if
2917the sequence is empty, an exception is raised.
2918
2919A third argument can be passed to indicate the starting value. In this
2920case the starting value is returned for an empty sequence, and the
2921function is first applied to the starting value and the first sequence
2922item, then to the result and the next item, and so on. For example,
2923
2924\begin{verbatim}
2925 >>> def sum(seq):
2926 ... return reduce(lambda x, y: x+y, seq, 0)
2927 ...
2928 >>> sum(range(1, 11))
2929 55
2930 >>> sum([])
2931 0
2932 >>>
2933\end{verbatim}
2934
2935\section{Continuation Lines Without Backslashes}
2936
2937While the general mechanism for continuation of a source line on the
2938next physical line remains to place a backslash on the end of the
2939line, expressions inside matched parentheses (or square brackets, or
2940curly braces) can now also be continued without using a backslash.
2941This is particularly useful for calls to functions with many
2942arguments, and for initializations of large tables.
2943
2944For example:
2945
2946\begin{verbatim}
2947 month_names = ['Januari', 'Februari', 'Maart',
2948 'April', 'Mei', 'Juni',
2949 'Juli', 'Augustus', 'September',
2950 'Oktober', 'November', 'December']
2951\end{verbatim}
2952
2953and
2954
2955\begin{verbatim}
2956 CopyInternalHyperLinks(self.context.hyperlinks,
2957 copy.context.hyperlinks,
2958 uidremap)
2959\end{verbatim}
2960
2961\section{Regular Expressions}
2962
2963While C's printf-style output formats, transformed into Python, are
2964adequate for most output formatting jobs, C's scanf-style input
2965formats are not very powerful. Instead of scanf-style input, Python
2966offers Emacs-style regular expressions as a powerful input and
2967scanning mechanism. Read the corresponding section in the Library
2968Reference for a full description.
2969
2970\section{Generalized Dictionaries}
2971
Guido van Rossum86751151995-02-28 17:14:32 +00002972The keys of dictionaries are no longer restricted to strings --- they
Guido van Rossum194e57c1995-02-15 15:51:38 +00002973can be any immutable basic type including strings, numbers, tuples, or
2974(certain) class instances. (Lists and dictionaries are not acceptable
2975as dictionary keys, in order to avoid problems when the object used as
2976a key is modified.)
Guido van Rossum6938f061994-08-01 12:22:53 +00002977
2978Dictionaries have two new methods: \verb\d.values()\ returns a list of
2979the dictionary's values, and \verb\d.items()\ returns a list of the
2980dictionary's (key, value) pairs. Like \verb\d.keys()\, these
2981operations are slow for large dictionaries. Examples:
2982
2983\begin{verbatim}
2984 >>> d = {100: 'honderd', 1000: 'duizend', 10: 'tien'}
2985 >>> d.keys()
2986 [100, 10, 1000]
2987 >>> d.values()
2988 ['honderd', 'tien', 'duizend']
2989 >>> d.items()
2990 [(100, 'honderd'), (10, 'tien'), (1000, 'duizend')]
2991 >>>
2992\end{verbatim}
2993
2994\section{Miscellaneous New Built-in Functions}
2995
2996The function \verb\vars()\ returns a dictionary containing the current
Guido van Rossum16cd7f91994-10-06 10:29:26 +00002997local variables. With a module argument, it returns that module's
Guido van Rossum6938f061994-08-01 12:22:53 +00002998global variables. The old function \verb\dir(x)\ returns
2999\verb\vars(x).keys()\.
3000
3001The function \verb\round(x)\ returns a floating point number rounded
3002to the nearest integer (but still expressed as a floating point
3003number). E.g. \verb\round(3.4) == 3.0\ and \verb\round(3.5) == 4.0\.
3004With a second argument it rounds to the specified number of digits,
3005e.g. \verb\round(math.pi, 4) == 3.1416\ or even
3006\verb\round(123.4, -2) == 100.0\.
3007
3008The function \verb\hash(x)\ returns a hash value for an object.
3009All object types acceptable as dictionary keys have a hash value (and
3010it is this hash value that the dictionary implementation uses).
3011
3012The function \verb\id(x)\ return a unique identifier for an object.
3013For two objects x and y, \verb\id(x) == id(y)\ if and only if
3014\verb\x is y\. (In fact the object's address is used.)
3015
3016The function \verb\hasattr(x, name)\ returns whether an object has an
3017attribute with the given name (a string value). The function
3018\verb\getattr(x, name)\ returns the object's attribute with the given
3019name. The function \verb\setattr(x, name, value)\ assigns a value to
3020an object's attribute with the given name. These three functions are
3021useful if the attribute names are not known beforehand. Note that
Guido van Rossume5f8b601995-01-04 19:12:49 +00003022\verb\getattr(x, 'spam')\ is equivalent to \verb\x.spam\, and
3023\verb\setattr(x, 'spam', y)\ is equivalent to \verb\x.spam = y\. By
Guido van Rossum6938f061994-08-01 12:22:53 +00003024definition, \verb\hasattr(x, name)\ returns true if and only if
3025\verb\getattr(x, name)\ returns without raising an exception.
3026
3027\section{Else Clause For Try Statement}
3028
3029The \verb\try...except\ statement now has an optional \verb\else\
3030clause, which must follow all \verb\except\ clauses. It is useful to
3031place code that must be executed if the \verb\try\ clause does not
3032raise an exception. For example:
3033
3034\begin{verbatim}
3035 for arg in sys.argv:
3036 try:
3037 f = open(arg, 'r')
3038 except IOError:
3039 print 'cannot open', arg
3040 else:
3041 print arg, 'has', len(f.readlines()), 'lines'
3042 f.close()
3043\end{verbatim}
Guido van Rossum5e0759d1992-08-07 16:06:24 +00003044
Guido van Rossumca3f6c81994-10-06 14:08:53 +00003045
3046\section{New Class Features in Release 1.1}
3047
Guido van Rossumcfb45e41994-11-10 23:04:43 +00003048Some changes have been made to classes: the operator overloading
Guido van Rossumca3f6c81994-10-06 14:08:53 +00003049mechanism is more flexible, providing more support for non-numeric use
Guido van Rossum29766b21994-10-06 15:33:25 +00003050of operators (including calling an object as if it were a function),
3051and it is possible to trap attribute accesses.
Guido van Rossumca3f6c81994-10-06 14:08:53 +00003052
3053\subsection{New Operator Overloading}
3054
3055It is no longer necessary to coerce both sides of an operator to the
3056same class or type. A class may still provide a \code{__coerce__}
3057method, but this method may return objects of different types or
3058classes if it feels like it. If no \code{__coerce__} is defined, any
3059argument type or class is acceptable.
3060
3061In order to make it possible to implement binary operators where the
3062right-hand side is a class instance but the left-hand side is not,
3063without using coercions, right-hand versions of all binary operators
3064may be defined. These have an `r' prepended to their name,
3065e.g. \code{__radd__}.
3066
3067For example, here's a very simple class for representing times. Times
3068are initialized from a number of seconds (like time.time()). Times
Guido van Rossum1133aec1995-03-15 11:34:18 +00003069are printed like this: \code{Wed Mar 15 12:28:48 1995}. Subtracting
Guido van Rossumca3f6c81994-10-06 14:08:53 +00003070two Times gives their difference in seconds. Adding or subtracting a
3071Time and a number gives a new Time. You can't add two times, nor can
3072you subtract a Time from a number.
3073
3074\begin{verbatim}
3075import time
3076
3077class Time:
3078 def __init__(self, seconds):
3079 self.seconds = seconds
3080 def __repr__(self):
3081 return time.ctime(self.seconds)
3082 def __add__(self, x):
3083 return Time(self.seconds + x)
3084 __radd__ = __add__ # support for x+t
3085 def __sub__(self, x):
3086 if hasattr(x, 'seconds'): # test if x could be a Time
3087 return self.seconds - x.seconds
3088 else:
3089 return self.seconds - x
3090
3091now = Time(time.time())
3092tomorrow = 24*3600 + now
3093yesterday = now - today
3094print tomorrow - yesterday # prints 172800
3095\end{verbatim}
3096
3097\subsection{Trapping Attribute Access}
3098
3099You can define three new ``magic'' methods in a class now:
3100\code{__getattr__(self, name)}, \code{__setattr__(self, name, value)}
3101and \code{__delattr__(self, name)}.
3102
3103The \code{__getattr__} method is called when an attribute access fails,
Guido van Rossum86751151995-02-28 17:14:32 +00003104i.e. when an attribute access would otherwise raise AttributeError ---
Guido van Rossumca3f6c81994-10-06 14:08:53 +00003105this is {\em after} the instance's dictionary and its class hierarchy
3106have been searched for the named attribute. Note that if this method
3107attempts to access any undefined instance attribute it will be called
3108recursively!
3109
3110The \code{__setattr__} and \code{__delattr__} methods are called when
3111assignment to, respectively deletion of an attribute are attempted.
3112They are called {\em instead} of the normal action (which is to insert
3113or delete the attribute in the instance dictionary). If either of
3114these methods most set or delete any attribute, they can only do so by
Guido van Rossum86751151995-02-28 17:14:32 +00003115using the instance dictionary directly --- \code{self.__dict__} --- else
Guido van Rossumca3f6c81994-10-06 14:08:53 +00003116they would be called recursively.
3117
3118For example, here's a near-universal ``Wrapper'' class that passes all
3119its attribute accesses to another object. Note how the
3120\code{__init__} method inserts the wrapped object in
3121\code{self.__dict__} in order to avoid endless recursion
3122(\code{__setattr__} would call \code{__getattr__} which would call
3123itself recursively).
3124
3125\begin{verbatim}
3126class Wrapper:
3127 def __init__(self, wrapped):
3128 self.__dict__['wrapped'] = wrapped
3129 def __getattr__(self, name):
3130 return getattr(self.wrapped, name)
3131 def __setattr__(self, name, value):
Guido van Rossumcfb45e41994-11-10 23:04:43 +00003132 setattr(self.wrapped, name, value)
Guido van Rossumca3f6c81994-10-06 14:08:53 +00003133 def __delattr__(self, name):
3134 delattr(self.wrapped, name)
3135
3136import sys
3137f = Wrapper(sys.stdout)
3138f.write('hello world\n') # prints 'hello world'
3139\end{verbatim}
3140
Guido van Rossum29766b21994-10-06 15:33:25 +00003141A simpler example of \code{__getattr__} is an attribute that is
3142computed each time (or the first time) it it accessed. For instance:
3143
3144\begin{verbatim}
3145from math import pi
3146
3147class Circle:
3148 def __init__(self, radius):
3149 self.radius = radius
3150 def __getattr__(self, name):
3151 if name == 'circumference':
3152 return 2 * pi * self.radius
3153 if name == 'diameter':
3154 return 2 * self.radius
3155 if name == 'area':
3156 return pi * pow(self.radius, 2)
3157 raise AttributeError, name
3158\end{verbatim}
3159
3160\subsection{Calling a Class Instance}
3161
3162If a class defines a method \code{__call__} it is possible to call its
3163instances as if they were functions. For example:
3164
3165\begin{verbatim}
3166class PresetSomeArguments:
3167 def __init__(self, func, *args):
3168 self.func, self.args = func, args
3169 def __call__(self, *args):
3170 return apply(self.func, self.args + args)
3171
3172f = PresetSomeArguments(pow, 2) # f(i) computes powers of 2
3173for i in range(10): print f(i), # prints 1 2 4 8 16 32 64 128 256 512
3174print # append newline
3175\end{verbatim}
3176
Guido van Rossum194e57c1995-02-15 15:51:38 +00003177
3178\chapter{New in Release 1.2}
3179
3180
3181This chapter describes even more recent additions to the Python
3182language and library.
3183
3184
3185\section{New Class Features}
3186
3187The semantics of \code{__coerce__} have been changed to be more
3188reasonable. As an example, the new standard module \code{Complex}
3189implements fairly complete complex numbers using this. Additional
3190examples of classes with and without \code{__coerce__} methods can be
3191found in the \code{Demo/classes} subdirectory, modules \code{Rat} and
3192\code{Dates}.
3193
3194If a class defines no \code{__coerce__} method, this is equivalent to
3195the following definition:
3196
3197\begin{verbatim}
3198def __coerce__(self, other): return self, other
3199\end{verbatim}
3200
3201If \code{__coerce__} coerces itself to an object of a different type,
3202the operation is carried out using that type --- in release 1.1, this
3203would cause an error.
3204
3205Comparisons involving class instances now invoke \code{__coerce__}
3206exactly as if \code{cmp(x, y)} were a binary operator like \code{+}
3207(except if \code{x} and \code{y} are the same object).
3208
3209\section{Unix Signal Handling}
3210
Guido van Rossum34e17771996-06-10 19:44:49 +00003211On {\UNIX}, Python now supports signal handling. The module
Guido van Rossum194e57c1995-02-15 15:51:38 +00003212\code{signal} exports functions \code{signal}, \code{pause} and
Guido van Rossum34e17771996-06-10 19:44:49 +00003213\code{alarm}, which act similar to their {\UNIX} counterparts. The
Guido van Rossum194e57c1995-02-15 15:51:38 +00003214module also exports the conventional names for the various signal
3215classes (also usable with \code{os.kill()}) and \code{SIG_IGN} and
3216\code{SIG_DFL}. See the section on \code{signal} in the Library
3217Reference Manual for more information.
3218
3219\section{Exceptions Can Be Classes}
3220
3221User-defined exceptions are no longer limited to being string objects
3222--- they can be identified by classes as well. Using this mechanism it
3223is possible to create extensible hierarchies of exceptions.
3224
3225There are two new valid (semantic) forms for the raise statement:
3226
3227\begin{verbatim}
3228raise Class, instance
3229
3230raise instance
3231\end{verbatim}
3232
3233In the first form, \code{instance} must be an instance of \code{Class}
3234or of a class derived from it. The second form is a shorthand for
3235
3236\begin{verbatim}
3237raise instance.__class__, instance
3238\end{verbatim}
3239
3240An except clause may list classes as well as string objects. A class
3241in an except clause is compatible with an exception if it is the same
3242class or a base class thereof (but not the other way around --- an
3243except clause listing a derived class is not compatible with a base
3244class). For example, the following code will print B, C, D in that
3245order:
3246
3247\begin{verbatim}
3248class B:
3249 pass
3250class C(B):
3251 pass
3252class D(C):
3253 pass
3254
3255for c in [B, C, D]:
3256 try:
3257 raise c()
3258 except D:
3259 print "D"
3260 except C:
3261 print "C"
3262 except B:
3263 print "B"
3264\end{verbatim}
3265
3266Note that if the except clauses were reversed (with ``\code{except B}''
3267first), it would have printed B, B, B --- the first matching except
3268clause is triggered.
3269
3270When an error message is printed for an unhandled exception which is a
3271class, the class name is printed, then a colon and a space, and
3272finally the instance converted to a string using the built-in function
3273\code{str()}.
3274
3275In this release, the built-in exceptions are still strings.
3276
3277
3278\section{Object Persistency and Object Copying}
3279
3280Two new modules, \code{pickle} and \code{shelve}, support storage and
3281retrieval of (almost) arbitrary Python objects on disk, using the
3282\code{dbm} package. A third module, \code{copy}, provides flexible
Guido van Rossumbcc95821995-02-16 16:28:48 +00003283object copying operations. More information on these modules is
3284provided in the Library Reference Manual.
Guido van Rossum194e57c1995-02-15 15:51:38 +00003285
3286\subsection{Persistent Objects}
3287
3288The module \code{pickle} provides a general framework for objects to
3289disassemble themselves into a stream of bytes and to reassemble such a
3290stream back into an object. It copes with reference sharing,
3291recursive objects and instances of user-defined classes, but not
3292(directly) with objects that have ``magical'' links into the operating
3293system such as open files, sockets or windows.
3294
3295The \code{pickle} module defines a simple protocol whereby
3296user-defined classes can control how they are disassembled and
3297assembled. The method \code{__getinitargs__()}, if defined, returns
3298the argument list for the constructor to be used at assembly time (by
3299default the constructor is called without arguments). The methods
3300\code{__getstate__()} and \code{__setstate__()} are used to pass
3301additional state from disassembly to assembly; by default the
3302instance's \code{__dict__} is passed and restored.
3303
3304Note that \code{pickle} does not open or close any files --- it can be
3305used equally well for moving objects around on a network or store them
3306in a database. For ease of debugging, and the inevitable occasional
3307manual patch-up, the constructed byte streams consist of printable
Guido van Rossum47b4c0f1995-03-15 11:25:32 +00003308\ASCII{} characters only (though it's not designed to be pretty).
Guido van Rossum194e57c1995-02-15 15:51:38 +00003309
3310The module \code{shelve} provides a simple model for storing objects
3311on files. The operation \code{shelve.open(filename)} returns a
3312``shelf'', which is a simple persistent database with a
3313dictionary-like interface. Database keys are strings, objects stored
3314in the database can be anything that \code{pickle} will handle.
3315
Guido van Rossum194e57c1995-02-15 15:51:38 +00003316\subsection{Copying Objects}
3317
3318The module \code{copy} exports two functions: \code{copy()} and
3319\code{deepcopy()}. The \code{copy()} function returns a ``shallow''
3320copy of an object; \code{deepcopy()} returns a ``deep'' copy. The
3321difference between shallow and deep copying is only relevant for
3322compound objects (objects that contain other objects, like lists or
3323class instances):
3324
3325\begin{itemize}
3326
3327\item
3328A shallow copy constructs a new compound object and then (to the
3329extent possible) inserts {\em the same objects} into in that the
3330original contains.
3331
3332\item
3333A deep copy constructs a new compound object and then, recursively,
3334inserts {\em copies} into it of the objects found in the original.
3335
3336\end{itemize}
3337
3338Both functions have the same restrictions and use the same protocols
3339as \code{pickle} --- user-defined classes can control how they are
3340copied by providing methods named \code{__getinitargs__()},
3341\code{__getstate__()} and \code{__setstate__()}.
3342
Guido van Rossum194e57c1995-02-15 15:51:38 +00003343
3344\section{Documentation Strings}
3345
3346A variety of objects now have a new attribute, \code{__doc__}, which
3347is supposed to contain a documentation string (if no documentation is
3348present, the attribute is \code{None}). New syntax, compatible with
3349the old interpreter, allows for convenient initialization of the
3350\code{__doc__} attribute of modules, classes and functions by placing
3351a string literal by itself as the first statement in the suite. It
3352must be a literal --- an expression yielding a string object is not
3353accepted as a documentation string, since future tools may need to
3354derive documentation from source by parsing.
3355
3356Here is a hypothetical, amply documented module called \code{Spam}:
3357
3358\begin{verbatim}
3359"""Spam operations.
3360
3361This module exports two classes, a function and an exception:
3362
3363class Spam: full Spam functionality --- three can sizes
3364class SpamLight: limited Spam functionality --- only one can size
3365
3366def open(filename): open a file and return a corresponding Spam or
3367SpamLight object
3368
3369GoneOff: exception raised for errors; should never happen
3370
3371Note that it is always possible to convert a SpamLight object to a
3372Spam object by a simple method call, but that the reverse operation is
3373generally costly and may fail for a number of reasons.
3374"""
3375
3376class SpamLight:
3377 """Limited spam functionality.
3378
3379 Supports a single can size, no flavor, and only hard disks.
3380 """
3381
3382 def __init__(self, size=12):
3383 """Construct a new SpamLight instance.
3384
3385 Argument is the can size.
3386 """
3387 # etc.
3388
3389 # etc.
3390
3391class Spam(SpamLight):
3392 """Full spam functionality.
3393
3394 Supports three can sizes, two flavor varieties, and all floppy
3395 disk formats still supported by current hardware.
3396 """
3397
3398 def __init__(self, size1=8, size2=12, size3=20):
3399 """Construct a new Spam instance.
3400
3401 Arguments are up to three can sizes.
3402 """
3403 # etc.
3404
3405 # etc.
3406
3407def open(filename = "/dev/null"):
3408 """Open a can of Spam.
3409
3410 Argument must be an existing file.
3411 """
3412 # etc.
3413
3414class GoneOff:
3415 """Class used for Spam exceptions.
3416
3417 There shouldn't be any.
3418 """
3419 pass
3420\end{verbatim}
3421
3422After executing ``\code{import Spam}'', the following expressions
3423return the various documentation strings from the module:
3424
3425\begin{verbatim}
3426Spam.__doc__
3427Spam.SpamLight.__doc__
3428Spam.SpamLight.__init__.__doc__
3429Spam.Spam.__doc__
3430Spam.Spam.__init__.__doc__
3431Spam.open.__doc__
3432Spam.GoneOff.__doc__
3433\end{verbatim}
3434
3435There are emerging conventions about the content and formatting of
3436documentation strings.
3437
3438The first line should always be a short, concise summary of the
3439object's purpose. For brevity, it should not explicitly state the
3440object's name or type, since these are available by other means
3441(except if the name happens to be a verb describing a function's
3442operation). This line should begin with a capital letter and end with
3443a period.
3444
3445If there are more lines in the documentation string, the second line
3446should be blank, visually separating the summary from the rest of the
3447description. The following lines should be one of more of paragraphs
3448describing the objects calling conventions, its side effects, etc.
3449
3450Some people like to copy the Emacs convention of using UPPER CASE for
3451function parameters --- this often saves a few words or lines.
3452
3453The Python parser does not strip indentation from multi-line string
3454literals in Python, so tools that process documentation have to strip
3455indentation. This is done using the following convention. The first
3456non-blank line {\em after} the first line of the string determines the
3457amount of indentation for the entire documentation string. (We can't
3458use the first line since it is generally adjacent to the string's
3459opening quotes so its indentation is not apparent in the string
3460literal.) Whitespace ``equivalent'' to this indentation is then
3461stripped from the start of all lines of the string. Lines that are
3462indented less should not occur, but if they occur all their leading
3463whitespace should be stripped. Equivalence of whitespace should be
3464tested after expansion of tabs (to 8 spaces, normally).
3465
3466In this release, few of the built-in or standard functions and modules
3467have documentation strings.
3468
3469
3470\section{Customizing Import and Built-Ins}
3471
3472In preparation for a ``restricted execution mode'' which will be
3473usable to run code received from an untrusted source (such as a WWW
3474server or client), the mechanism by which modules are imported has
3475been redesigned. It is now possible to provide your own function
3476\code{__import__} which is called whenever an \code{import} statement
3477is executed. There's a built-in function \code{__import__} which
3478provides the default implementation, but more interesting, the various
3479steps it takes are available separately from the new built-in module
3480\code{imp}. (See the section on \code{imp} in the Library Reference
Guido van Rossumabfa2ca1995-07-07 22:57:02 +00003481Manual for more information on this module -- it also contains a
3482complete example of how to write your own \code{__import__} function.)
Guido van Rossum194e57c1995-02-15 15:51:38 +00003483
3484When you do \code{dir()} in a fresh interactive interpreter you will
3485see another ``secret'' object that's present in every module:
3486\code{__builtins__}. This is either a dictionary or a module
3487containing the set of built-in objects used by functions defined in
3488current module. Although normally all modules are initialized with a
3489reference to the same dictionary, it is now possible to use a
3490different set of built-ins on a per-module basis. Together with the
3491fact that the \code{import} statement uses the \code{__import__}
3492function it finds in the importing modules' dictionary of built-ins,
3493this forms the basis for a future restricted execution mode.
3494
3495
3496\section{Python and the World-Wide Web}
3497
3498There is a growing number of modules available for writing WWW tools.
3499The previous release already sported modules \code{gopherlib},
Guido van Rossumbcc95821995-02-16 16:28:48 +00003500\code{ftplib}, \code{httplib} and \code{urllib} (which unifies the
3501other three) for accessing data through the commonest WWW protocols.
3502This release also provides \code{cgi}, to ease the writing of
3503server-side scripts that use the Common Gateway Interface protocol,
3504supported by most WWW servers. The module \code{urlparse} provides
3505precise parsing of a URL string into its components (address scheme,
3506network location, path, parameters, query, and fragment identifier).
Guido van Rossum194e57c1995-02-15 15:51:38 +00003507
Guido van Rossumbcc95821995-02-16 16:28:48 +00003508A rudimentary, parser for HTML files is available in the module
3509\code{htmllib}. It currently supports a subset of HTML 1.0 (if you
3510bring it up to date, I'd love to receive your fixes!). Unfortunately
3511Python seems to be too slow for real-time parsing and formatting of
Guido van Rossum86751151995-02-28 17:14:32 +00003512HTML such as required by interactive WWW browsers --- but it's good
3513enough to write a ``robot'' (an automated WWW browser that searches
3514the web for information).
Guido van Rossum194e57c1995-02-15 15:51:38 +00003515
3516
3517\section{Miscellaneous}
3518
3519\begin{itemize}
3520
3521\item
3522The \code{socket} module now exports all the needed constants used for
3523socket operations, such as \code{SO_BROADCAST}.
3524
3525\item
3526The functions \code{popen()} and \code{fdopen()} in the \code{os}
3527module now follow the pattern of the built-in function \code{open()}:
3528the default mode argument is \code{'r'} and the optional third
3529argument specifies the buffer size, where \code{0} means unbuffered,
3530\code{1} means line-buffered, and any larger number means the size of
3531the buffer in bytes.
3532
3533\end{itemize}
3534
3535
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003536\chapter{New in Release 1.3}
3537
3538
3539This chapter describes yet more recent additions to the Python
3540language and library.
3541
3542
Guido van Rossum9beefa21995-10-08 00:38:51 +00003543\section{Keyword Arguments}
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003544
3545Functions and methods written in Python can now be called using
3546keyword arguments of the form \code{\var{keyword} = \var{value}}. For
3547instance, the following function:
3548
3549\begin{verbatim}
3550def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
3551 print "-- This parrot wouldn't", action,
3552 print "if you put", voltage, "Volts through it."
3553 print "-- Lovely plumage, the", type
3554 print "-- It's", state, "!"
3555\end{verbatim}
3556
3557could be called in any of the following ways:
3558
3559\begin{verbatim}
3560parrot(1000)
3561parrot(action = 'VOOOOOM', voltage = 1000000)
3562parrot('a thousand', state = 'pushing up the daisies')
3563parrot('a million', 'bereft of life', 'jump')
3564\end{verbatim}
3565
3566but the following calls would all be invalid:
3567
3568\begin{verbatim}
3569parrot() # required argument missing
3570parrot(voltage=5.0, 'dead') # non-keyword argument following keyword
3571parrot(110, voltage=220) # duplicate value for argument
3572parrot(actor='John Cleese') # unknown keyword
3573\end{verbatim}
3574
3575In general, an argument list must have the form: zero or more
3576positional arguments followed by zero or more keyword arguments, where
3577the keywords must be chosen from the formal parameter names. It's not
3578important whether a formal parameter has a default value or not. No
3579argument must receive a value more than once -- formal parameter names
3580corresponding to positional arguments cannot be used as keywords in
3581the same calls.
3582
3583Note that no special syntax is required to allow a function to be
3584called with keyword arguments. The additional costs incurred by
3585keyword arguments are only present when a call uses them.
3586
3587(As far as I know, these rules are exactly the same as used by
3588Modula-3, even if they are enforced by totally different means. This
3589is intentional.)
3590
3591When a final formal parameter of the form \code{**\var{name}} is
3592present, it receives a dictionary containing all keyword arguments
3593whose keyword doesn't correspond to a formal parameter. This may be
3594combined with a formal parameter of the form \code{*\var{name}} which
3595receives a tuple containing the positional arguments beyond the formal
3596parameter list. (\code{*\var{name}} must occur before
3597\code{**\var{name}}.) For example, if we define a function like this:
3598
3599\begin{verbatim}
3600def cheeseshop(kind, *arguments, **keywords):
3601 print "-- Do you have any", kind, '?'
3602 print "-- I'm sorry, we're all out of", kind
3603 for arg in arguments: print arg
3604 print '-'*40
3605 for kw in keywords.keys(): print kw, ':', keywords[kw]
3606\end{verbatim}
3607
3608It could be called like this:
3609
3610\begin{verbatim}
3611cheeseshop('Limburger', "It's very runny, sir.",
3612 "It's really very, VERY runny, sir.",
3613 client='John Cleese',
3614 shopkeeper='Michael Palin',
3615 sketch='Cheese Shop Sketch')
3616\end{verbatim}
3617
3618and of course it would print:
3619
3620\begin{verbatim}
3621-- Do you have any Limburger ?
3622-- I'm sorry, we're all out of Limburger
3623It's very runny, sir.
3624It's really very, VERY runny, sir.
3625----------------------------------------
3626client : John Cleese
3627shopkeeper : Michael Palin
3628sketch : Cheese Shop Sketch
3629\end{verbatim}
3630
Guido van Rossum691d4ec1995-10-08 01:14:57 +00003631Consequences of this change include:
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003632
3633\begin{itemize}
3634
3635\item
Guido van Rossum691d4ec1995-10-08 01:14:57 +00003636The built-in function \code{apply()} now has an optional third
3637argument, which is a dictionary specifying any keyword arguments to be
3638passed. For example,
3639\begin{verbatim}
3640apply(parrot, (), {'voltage': 20, 'action': 'voomm'})
3641\end{verbatim}
3642is equivalent to
3643\begin{verbatim}
3644parrot(voltage=20, action='voomm')
3645\end{verbatim}
3646
3647\item
3648There is also a mechanism for functions and methods defined in an
3649extension module (i.e., implemented in C or C++) to receive a
3650dictionary of their keyword arguments. By default, such functions do
3651not accept keyword arguments, since the argument names are not
3652available to the interpreter.
3653
3654\item
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003655In the effort of implementing keyword arguments, function and
3656especially method calls have been sped up significantly -- for a
3657method with ten formal parameters, the call overhead has been cut in
3658half; for a function with one formal parameters, the overhead has been
3659reduced by a third.
3660
3661\item
3662The format of \code{.pyc} files has changed (again).
3663
Guido van Rossum9beefa21995-10-08 00:38:51 +00003664\item
3665The \code{access} statement has been disabled. The syntax is still
3666recognized but no code is generated for it. (There were some
3667unpleasant interactions with changes for keyword arguments, and my
3668plan is to get rid of \code{access} altogether in favor of a different
3669approach.)
3670
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003671\end{itemize}
3672
Guido van Rossum9beefa21995-10-08 00:38:51 +00003673\section{Changes to the WWW and Internet tools}
3674
3675\begin{itemize}
3676
3677\item
3678The \code{htmllib} module has been rewritten in an incompatible
3679fashion. The new version is considerably more complete (HTML 2.0
3680except forms, but including all ISO-8859-1 entity definitions), and
3681easy to use. Small changes to \code{sgmllib} have also been made, to
3682better match the tokenization of HTML as recognized by other web
3683tools.
3684
3685\item
3686A new module \code{formatter} has been added, for use with the new
3687\code{htmllib} module.
3688
3689\item
3690The \code{urllib}and \code{httplib} modules have been changed somewhat
3691to allow overriding unknown URL types and to support authentication.
3692They now use \code{mimetools.Message} instead of \code{rfc822.Message}
3693to parse headers. The \code{endrequest()} method has been removed
3694from the HTTP class since it breaks the interaction with some servers.
3695
3696\item
3697The \code{rfc822.Message} class has been changed to allow a flag to be
3698passed in that says that the file is unseekable.
3699
3700\item
3701The \code{ftplib} module has been fixed to be (hopefully) more robust
3702on Linux.
3703
3704\item
3705Several new operations that are optionally supported by servers have
3706been added to \code{nntplib}: \code{xover}, \code{xgtitle},
3707\code{xpath} and \code{date}. % thanks to Kevan Heydon
3708
3709\end{itemize}
3710
3711\section{Other Language Changes}
3712
3713\begin{itemize}
3714
3715\item
3716The \code{raise} statement now takes an optional argument which
3717specifies the traceback to be used when printing the exception's stack
3718trace. This must be a traceback object, such as found in
3719\code{sys.exc_traceback}. When omitted or given as \code{None}, the
3720old behavior (to generate a stack trace entry for the current stack
3721frame) is used.
3722
3723\item
3724The tokenizer is now more tolerant of alien whitespace. Control-L in
3725the leading whitespace of a line resets the column number to zero,
3726while Control-R just before the end of the line is ignored.
3727
3728\end{itemize}
3729
3730\section{Changes to Built-in Operations}
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003731
3732\begin{itemize}
3733
3734\item
3735For file objects, \code{\var{f}.read(0)} and
3736\code{\var{f}.readline(0)} now return an empty string rather than
3737reading an unlimited number of bytes. For the latter, omit the
3738argument altogether or pass a negative value.
3739
3740\item
3741A new system variable, \code{sys.platform}, has been added. It
3742specifies the current platform, e.g. \code{sunos5} or \code{linux1}.
3743
3744\item
3745The built-in functions \code{input()} and \code{raw_input()} now use
3746the GNU readline library when it has been configured (formerly, only
3747interactive input to the interpreter itself was read using GNU
3748readline). The GNU readline library provides elaborate line editing
3749and history. The Python debugger (\code{pdb}) is the first
3750beneficiary of this change.
3751
3752\item
3753Two new built-in functions, \code{globals()} and \code{locals()},
3754provide access to dictionaries containming current global and local
3755variables, respectively. (These augment rather than replace
3756\code{vars()}, which returns the current local variables when called
3757without an argument, and a module's global variables when called with
3758an argument of type module.)
3759
3760\item
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003761The built-in function \code{compile()} now takes a third possible
3762value for the kind of code to be compiled: specifying \code{'single'}
3763generates code for a single interactive statement, which prints the
3764output of expression statements that evaluate to something else than
3765\code{None}.
3766
Guido van Rossum9beefa21995-10-08 00:38:51 +00003767\end{itemize}
3768
3769\section{Library Changes}
3770
3771\begin{itemize}
3772
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003773\item
Guido van Rossum691d4ec1995-10-08 01:14:57 +00003774There are new module \code{ni} and \code{ihooks} that support
3775importing modules with hierarchical names such as \code{A.B.C}. This
3776is enabled by writing \code{import ni; ni.ni()} at the very top of the
3777main program. These modules are amply documented in the Python
3778source.
3779
3780\item
3781The module \code{rexec} has been rewritten (incompatibly) to define a
3782class and to use \code{ihooks}.
3783
3784\item
Guido van Rossum9beefa21995-10-08 00:38:51 +00003785The \code{string.split()} and \code{string.splitfields()} functions
3786are now the same function (the presence or absence of the second
3787argument determines which operation is invoked); similar for
3788\code{string.join()} and \code{string.joinfields()}.
3789
3790\item
3791The \code{Tkinter} module and its helper \code{Dialog} have been
3792revamped to use keyword arguments. Tk 4.0 is now the standard. A new
3793module \code{FileDialog} has been added which implements standard file
3794selection dialogs.
3795
3796\item
3797The optional built-in modules \code{dbm} and \code{gdbm} are more
3798coordinated --- their \code{open()} functions now take the same values
3799for their \var{flag} argument, and the \var{flag} and \var{mode}
3800argument have default values (to open the database for reading only,
3801and to create the database with mode \code{0666} minuse the umask,
3802respectively). The memory leaks have finally been fixed.
3803
3804\item
3805A new dbm-like module, \code{bsddb}, has been added, which uses the
3806BSD DB package's hash method. % thanks to David Ely
3807
3808\item
3809A portable (though slow) dbm-clone, implemented in Python, has been
3810added for systems where none of the above is provided. It is aptly
3811dubbed \code{dumbdbm}.
3812
3813\item
3814The module \code{anydbm} provides a unified interface to \code{bsddb},
3815\code{gdbm}, \code{dbm}, and \code{dumbdbm}, choosing the first one
3816available.
3817
3818\item
3819A new extension module, \code{binascii}, provides a variety of
3820operations for conversion of text-encoded binary data.
3821
3822\item
3823There are three new or rewritten companion modules implemented in
3824Python that can encode and decode the most common such formats:
3825\code{uu} (uuencode), \code{base64} and \code{binhex}.
3826
3827\item
3828A module to handle the MIME encoding quoted-printable has also been
3829added: \code{quopri}.
3830
Guido van Rossumaa93ca81995-10-11 17:47:45 +00003831\item
3832The parser module (which provides an interface to the Python parser's
3833abstract syntax trees) has been rewritten (incompatibly) by Fred
3834Drake. It now lets you change the parse tree and compile the result!
3835
Guido van Rossumbf032a91995-10-11 19:28:39 +00003836\item
3837The \code{syslog} module has been upgraded and documented.
3838% thanks to Steve Clift
3839
Guido van Rossum9beefa21995-10-08 00:38:51 +00003840\end{itemize}
3841
3842\section{Other Changes}
3843
3844\begin{itemize}
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003845
3846\item
3847The dynamic module loader recognizes the fact that different filenames
3848point to the same shared library and loads the library only once, so
3849you can have a single shared library that defines multiple modules.
3850(SunOS / SVR4 style shared libraries only.)
3851
3852\item
3853Jim Fulton's ``abstract object interface'' has been incorporated into
3854the run-time API. For more detailes, read the files
3855\code{Include/abstract.h} and \code{Objects/abstract.c}.
3856
3857\item
Guido van Rossum9beefa21995-10-08 00:38:51 +00003858The Macintosh version is much more robust now.
3859
3860\item
Guido van Rossumeafe32a1995-08-10 14:18:10 +00003861Numerous things I have forgotten or that are so obscure no-one will
3862notice them anyway :-)
3863
3864\end{itemize}
3865
Guido van Rossumd9bf55d1991-01-11 16:35:08 +00003866\end{document}