blob: b849cc9485f44a7ff6a85e7a58089a03298db54f [file] [log] [blame]
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001\documentclass{howto}
2
3% $Id$
4
5\title{What's New in Python 2.2}
Andrew M. Kuchling4f9e2202001-10-29 18:09:42 +00006\release{0.07}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00007\author{A.M. Kuchling}
Andrew M. Kuchling7bf82772001-07-11 18:54:26 +00008\authoraddress{\email{akuchlin@mems-exchange.org}}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00009\begin{document}
10\maketitle\tableofcontents
11
12\section{Introduction}
13
14{\large This document is a draft, and is subject to change until the
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +000015final version of Python 2.2 is released. Currently it's up to date
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +000016for Python 2.2 beta 1. Please send any comments, bug reports, or
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +000017questions, no matter how minor, to \email{akuchlin@mems-exchange.org}.
18}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000019
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000020This article explains the new features in Python 2.2.
21
22Python 2.2 can be thought of as the "cleanup release". There are some
23features such as generators and iterators that are completely new, but
24most of the changes, significant and far-reaching though they may be,
25are aimed at cleaning up irregularities and dark corners of the
26language design.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000027
Andrew M. Kuchling1497b622001-09-24 14:51:16 +000028This article doesn't attempt to provide a complete specification of
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000029the new features, but instead provides a convenient overview. For
30full details, you should refer to the documentation for Python 2.2,
Fred Drake0d002542001-07-17 13:55:33 +000031such as the
32\citetitle[http://python.sourceforge.net/devel-docs/lib/lib.html]{Python
33Library Reference} and the
34\citetitle[http://python.sourceforge.net/devel-docs/ref/ref.html]{Python
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000035Reference Manual}.
36% XXX These \citetitle marks should get the python.org URLs for the final
Fred Drake0d002542001-07-17 13:55:33 +000037% release, just as soon as the docs are published there.
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000038If you want to understand the complete implementation and design
39rationale for a change, refer to the PEP for a particular new feature.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000040
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +000041The final release of Python 2.2 is planned for December 2001.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000042
Andrew M. Kuchling1497b622001-09-24 14:51:16 +000043\begin{seealso}
44
45\url{http://www.unixreview.com/documents/s=1356/urm0109h/0109h.htm}
46{``What's So Special About Python 2.2?'' is also about the new 2.2
47features, and was written by Cameron Laird and Kathryn Soraiz.}
48
49\end{seealso}
50
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +000051
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000052%======================================================================
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000053\section{PEP 252: Type and Class Changes}
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000054
Andrew M. Kuchling279e7442001-10-22 02:03:40 +000055The largest and most far-reaching changes in Python 2.2 are to
56Python's model of objects and classes. The changes should be backward
57compatible, so it's likely that your code will continue to run
58unchanged, but the changes provide some amazing new capabilities.
59Before beginning this, the longest and most complicated section of
60this article, I'll provide an overview of the changes and offer some
61comments.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000062
Andrew M. Kuchling279e7442001-10-22 02:03:40 +000063A long time ago I wrote a Web page
64(\url{http://www.amk.ca/python/writing/warts.html}) listing flaws in
65Python's design. One of the most significant flaws was that it's
66impossible to subclass Python types implemented in C. In particular,
67it's not possible to subclass built-in types, so you can't just
68subclass, say, lists in order to add a single useful method to them.
69The \module{UserList} module provides a class that supports all of the
70methods of lists and that can be subclassed further, but there's lots
71of C code that expects a regular Python list and won't accept a
72\class{UserList} instance.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +000073
Andrew M. Kuchling279e7442001-10-22 02:03:40 +000074Python 2.2 fixes this, and in the process adds some exciting new
75capabilities. A brief summary:
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +000076
Andrew M. Kuchling279e7442001-10-22 02:03:40 +000077\begin{itemize}
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +000078
Andrew M. Kuchling279e7442001-10-22 02:03:40 +000079\item You can subclass built-in types such as lists and even integers,
80and your subclasses should work in every place that requires the
81original type.
82
83\item It's now possible to define static and class methods, in addition
84to the instance methods available in previous versions of Python.
85
86\item It's also possible to automatically call methods on accessing or
87setting an instance attribute by using a new mechanism called
88\dfn{properties}. Many uses of \method{__getattr__} can be rewritten
89to use properties instead, making the resulting code simpler and
90faster. As a small side benefit, attributes can now have docstrings,
91too.
92
93\item The list of legal attributes for an instance can be limited to a
94particular set using \dfn{slots}, making it possible to safeguard
95against typos and perhaps make more optimizations possible in future
96versions of Python.
97
98\end{itemize}
99
100Some users have voiced concern about all these changes. Sure, they
101say, the new features are neat and lend themselves to all sorts of
102tricks that weren't possible in previous versions of Python, but
103they also make the language more complicated. Some people have said
104that they've always recommended Python for its simplicity, and feel
105that its simplicity is being lost.
106
107Personally, I think there's no need to worry. Many of the new
108features are quite esoteric, and you can write a lot of Python code
109without ever needed to be aware of them. Writing a simple class is no
110more difficult than it ever was, so you don't need to bother learning
111or teaching them unless they're actually needed. Some very
112complicated tasks that were previously only possible from C will now
113be possible in pure Python, and to my mind that's all for the better.
114
115I'm not going to attempt to cover every single corner case and small
116change that were required to make the new features work. Instead this
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000117section will paint only the broad strokes. See section~\ref{sect-rellinks},
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000118``Related Links'', for further sources of information about Python 2.2's new
119object model.
120
121
122\subsection{Old and New Classes}
123
124First, you should know that Python 2.2 really has two kinds of
125classes: classic or old-style classes, and new-style classes. The
126old-style class model is exactly the same as the class model in
127earlier versions of Python. All the new features described in this
128section apply only to new-style classes. This divergence isn't
129intended to last forever; eventually old-style classes will be
130dropped, possibly in Python 3.0.
131
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000132So how do you define a new-style class? You do it by subclassing an
133existing new-style class. Most of Python's built-in types, such as
134integers, lists, dictionaries, and even files, are new-style classes
135now. A new-style class named \class{object}, the base class for all
136built-in types, has been also been added so if no built-in type is
137suitable, you can just subclass \class{object}:
138
139\begin{verbatim}
140class C(object):
141 def __init__ (self):
142 ...
143 ...
144\end{verbatim}
145
146This means that \keyword{class} statements that don't have any base
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000147classes are always classic classes in Python 2.2. (Actually you can
148also change this by setting a module-level variable named
149\member{__metaclass__} --- see \pep{253} for the details --- but it's
150easier to just subclass \keyword{object}.)
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000151
152The type objects for the built-in types are available as built-ins,
153named using a clever trick. Python has always had built-in functions
154named \function{int()}, \function{float()}, and \function{str()}. In
1552.2, they aren't functions any more, but type objects that behave as
156factories when called.
157
158\begin{verbatim}
159>>> int
160<type 'int'>
161>>> int('123')
162123
163\end{verbatim}
164
165To make the set of types complete, new type objects such as
Andrew M. Kuchling1117d932001-10-29 20:37:47 +0000166\function{dict} and \function{file} have been added. Here's a
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000167more interesting example, adding a \method{lock()} method to file
168objects:
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000169
170\begin{verbatim}
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000171class LockableFile(file):
172 def lock (self, operation, length=0, start=0, whence=0):
173 import fcntl
174 return fcntl.lockf(self.fileno(), operation,
175 length, start, whence)
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000176\end{verbatim}
177
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000178The now-obsolete \module{posixfile} module contained a class that
179emulated all of a file object's methods and also added a
180\method{lock()} method, but this class couldn't be passed to internal
181functions that expected a built-in file, something which is possible
182with our new \class{LockableFile}.
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000183
184
185\subsection{Descriptors}
186
187In previous versions of Python, there was no consistent way to
188discover what attributes and methods were supported by an object.
189There were some informal conventions, such as defining
190\member{__members__} and \member{__methods__} attributes that were
191lists of names, but often the author of an extension type or a class
192wouldn't bother to define them. You could fall back on inspecting the
193\member{__dict__} of an object, but when class inheritance or an
194arbitrary \method{__getattr__} hook were in use this could still be
195inaccurate.
196
197The one big idea underlying the new class model is that an API for
198describing the attributes of an object using \dfn{descriptors} has
199been formalized. Descriptors specify the value of an attribute,
200stating whether it's a method or a field. With the descriptor API,
201static methods and class methods become possible, as well as more
202exotic constructs.
203
204Attribute descriptors are objects that live inside class objects, and
205have a few attributes of their own:
206
207\begin{itemize}
208
209\item \member{__name__} is the attribute's name.
210
211\item \member{__doc__} is the attribute's docstring.
212
213\item \method{__get__(\var{object})} is a method that retrieves the attribute value from \var{object}.
214
Andrew M. Kuchling4f9e2202001-10-29 18:09:42 +0000215\item \method{__set__(\var{object}, \var{value})} sets the attribute
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000216on \var{object} to \var{value}.
217
218\end{itemize}
219
220For example, when you write \code{obj.x}, the steps that Python
221actually performs are:
222
223\begin{verbatim}
224descriptor = obj.__class__.x
Andrew M. Kuchling7cc13de2001-10-30 14:22:11 +0000225descriptor.__get__(obj)
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000226\end{verbatim}
227
Andrew M. Kuchling7cc13de2001-10-30 14:22:11 +0000228For methods, \method{descriptor.__get__} returns a temporary object that's
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000229callable, and wraps up the instance and the method to be called on it.
230This is also why static methods and class methods are now possible;
231they have descriptors that wrap up just the method, or the method and
232the class. As a brief explanation of these new kinds of methods,
233static methods aren't passed the instance, and therefore resemble
234regular functions. Class methods are passed the class of the object,
235but not the object itself. Static and class methods is defined like
236this:
237
238\begin{verbatim}
239class C:
240 def f(arg1, arg2):
241 ...
242 f = staticmethod(f)
243
244 def g(cls, arg1, arg2):
245 ...
246 g = classmethod(g)
247\end{verbatim}
248
249The \function{staticmethod()} function takes the function
250\function{f}, and returns it wrapped up in a descriptor so it can be
251stored in the class object. You might expect there to be special
252syntax for creating such methods (\code{def static f()},
253\code{defstatic f()}, or something like that) but no such syntax has
254been defined yet; that's been left for future versions.
255
256More new features, such as slots and properties, are also implemented
257as new kinds of descriptors, and it's not difficult to write a
258descriptor class that does something novel. For example, it would be
259possible to write a descriptor class that made it possible to write
260Eiffel-style preconditions and postconditions for a method. A class
261that used this feature might be defined like this:
262
263\begin{verbatim}
264from eiffel import eiffelmethod
265
266class C:
267 def f(self, arg1, arg2):
268 # The actual function
269 def pre_f(self):
270 # Check preconditions
271 def post_f(self):
272 # Check postconditions
273
274 f = eiffelmethod(f, pre_f, post_f)
275\end{verbatim}
276
277Note that a person using the new \function{eiffelmethod()} doesn't
278have to understand anything about descriptors. This is why I think
279the new features don't increase the basic complexity of the language.
280There will be a few wizards who need to know about it in order to
281write \function{eiffelmethod()} or the ZODB or whatever, but most
282users will just write code on top of the resulting libraries and
283ignore the implementation details.
284
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000285\subsection{Multiple Inheritance: The Diamond Rule}
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000286
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000287Multiple inheritance has also been made more useful through changing
288the rules under which names are resolved. Consider this set of classes
289(diagram taken from \pep{253} by Guido van Rossum):
290
291\begin{verbatim}
292 class A:
293 ^ ^ def save(self): ...
294 / \
295 / \
296 / \
297 / \
298 class B class C:
299 ^ ^ def save(self): ...
300 \ /
301 \ /
302 \ /
303 \ /
304 class D
305\end{verbatim}
306
307The lookup rule for classic classes is simple but not very smart; the
308base classes are searched depth-first, going from left to right. A
309reference to \method{D.save} will search the classes \class{D},
310\class{B}, and then \class{A}, where \method{save()} would be found
311and returned. \method{C.save()} would never be found at all. This is
312bad, because if \class{C}'s \method{save()} method is saving some
313internal state specific to \class{C}, not calling it will result in
314that state never getting saved.
315
316New-style classes follow a different algorithm that's a bit more
317complicated to explain, but does the right thing in this situation.
318
319\begin{enumerate}
320
321\item List all the base classes, following the classic lookup rule and
322include a class multiple times if it's visited repeatedly. In the
323above example, the list of visited classes is [\class{D}, \class{B},
Andrew M. Kuchling28369072001-10-29 15:47:33 +0000324\class{A}, \class{C}, \class{A}].
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000325
326\item Scan the list for duplicated classes. If any are found, remove
327all but one occurrence, leaving the \emph{last} one in the list. In
328the above example, the list becomes [\class{D}, \class{B}, \class{C},
Andrew M. Kuchling28369072001-10-29 15:47:33 +0000329\class{A}] after dropping duplicates.
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000330
331\end{enumerate}
332
333Following this rule, referring to \method{D.save()} will return
334\method{C.save()}, which is the behaviour we're after. This lookup
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000335rule is the same as the one followed by Common Lisp.
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000336
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000337
338\subsection{Attribute Access}
339
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000340A fair number of sophisticated Python classes define hooks for
341attribute access using \method{__getattr__}; most commonly this is
342done for convenience, to make code more readable by automatically
343mapping an attribute access such as \code{obj.parent} into a method
344call such as \code{obj.get_parent()}. Python 2.2 adds some new ways
345of controlling attribute access.
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000346
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000347First, \method{__getattr__(\var{attr_name})} is still supported by
348new-style classes, and nothing about it has changed. As before, it
349will be called when an attempt is made to access \code{obj.foo} and no
350attribute named \samp{foo} is found in the instance's dictionary.
351
352New-style classes also support a new method,
353\method{__getattribute__(\var{attr_name})}. The difference between
354the two methods is that \method{__getattribute__} is \emph{always}
355called whenever any attribute is accessed, while the old
356\method{__getattr__} is only called if \samp{foo} isn't found in the
357instance's dictionary.
358
359However, Python 2.2's support for \dfn{properties} will often be a
360simpler way to trap attribute references. Writing a
361\method{__getattr__} method is complicated because to avoid recursion
362you can't use regular attribute accesses inside them, and instead have
363to mess around with the contents of \member{__dict__}.
364\method{__getattr__} methods also end up being called by Python when
365it checks for other methods such as \method{__repr__} or
366\method{__coerce__}, and so have to be written with this in mind.
367Finally, calling a function on every attribute access results in a
368sizable performance loss.
369
370\class{property} is a new built-in type that packages up three
371functions that get, set, or delete an attribute, and a docstring. For
372example, if you want to define a \member{size} attribute that's
373computed, but also settable, you could write:
374
375\begin{verbatim}
376class C:
377 def get_size (self):
378 result = ... computation ...
379 return result
380 def set_size (self, size):
381 ... compute something based on the size
382 and set internal state appropriately ...
383
384 # Define a property. The 'delete this attribute'
385 # method is defined as None, so the attribute
386 # can't be deleted.
387 size = property(get_size, set_size,
388 None,
389 "Storage size of this instance")
390\end{verbatim}
391
392That is certainly clearer and easier to write than a pair of
393\method{__getattr__}/\method{__setattr__} methods that check for the
394\member{size} attribute and handle it specially, while retrieving all
395other attributes from the instance's \member{__dict__}. Accesses to
396\member{size} are also the only ones which have to perform the work of
397calling a function, letting references to other attributes run at
398their usual speed.
399
400Finally, it's possible to constrain the list of attributes that can be
401referenced on an object using the new \member{__slots__} attribute.
402Python objects are usually very dynamic; at any time it's possible to
403define a new attribute on an instance by just doing
404\code{obj.new_attr=1}. This is flexible and convenient, but this
405flexibility can also lead to bugs, as when you meant to write
406\code{obj.template = 'a'} but make a typo and wrote
407\code{obj.templtae} by accident.
408
409A new-style class can define a class variable named \member{__slots__}
410to constrain the list of legal attribute names. An example will make
411this clear:
412
413\begin{verbatim}
414>>> class C(object):
415... __slots__ = ['template', 'name']
416...
417>>> obj = C()
418>>> print obj.template
419None
Andrew M. Kuchling28369072001-10-29 15:47:33 +0000420>>> obj.template = 'Test'
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000421>>> print obj.template
422Test
Andrew M. Kuchling28369072001-10-29 15:47:33 +0000423>>> obj.templtae = None
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000424Traceback (most recent call last):
425 File "<stdin>", line 1, in ?
426AttributeError: 'C' object has no attribute 'templtae'
427\end{verbatim}
428
Andrew M. Kuchling4855b022001-10-23 20:26:16 +0000429
430
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000431\subsection{Related Links}
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000432\label{sect-rellinks}
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000433
434This section has just been a quick overview of the new features,
435giving enough of an explanation to start you programming, but many
436details have been simplified or ignored. Where should you go to get a
437more complete picture?
438
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000439\url{http://www.python.org/2.2/descrintro.html} is a lengthy tutorial
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000440introduction to the descriptor features, written by Guido van Rossum.
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000441If my description has whetted your appetite, go read this tutorial
442next, because it goes into much more detail about the new features
443while still remaining quite easy to read.
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000444
445Next, there are two relevant PEPs, \pep{252} and \pep{253}. \pep{252}
446is titled "Making Types Look More Like Classes", and covers the
447descriptor API. \pep{253} is titled "Subtyping Built-in Types", and
448describes the changes to type objects that make it possible to subtype
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000449built-in objects. \pep{253} is the more complicated PEP of the two,
450and at a few points the necessary explanations of types and meta-types
451may cause your head to explode. Both PEPs were written and
452implemented by Guido van Rossum, with substantial assistance from the
453rest of the Zope Corp. team.
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000454
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +0000455Finally, there's the ultimate authority: the source code. Most of the
456machinery for the type handling is in \file{Objects/typeobject.c}, but
457you should only resort to it after all other avenues have been
458exhausted (including posting a question to python-list or python-dev.)
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000459
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000460
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +0000461%======================================================================
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000462\section{PEP 234: Iterators}
463
464A significant addition to 2.2 is an iteration interface at both the C
465and Python levels. Objects can define how they can be looped over by
466callers.
467
468In Python versions up to 2.1, the usual way to make \code{for item in
469obj} work is to define a \method{__getitem__()} method that looks
470something like this:
471
472\begin{verbatim}
473 def __getitem__(self, index):
474 return <next item>
475\end{verbatim}
476
477\method{__getitem__()} is more properly used to define an indexing
478operation on an object so that you can write \code{obj[5]} to retrieve
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +0000479the sixth element. It's a bit misleading when you're using this only
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000480to support \keyword{for} loops. Consider some file-like object that
481wants to be looped over; the \var{index} parameter is essentially
482meaningless, as the class probably assumes that a series of
483\method{__getitem__()} calls will be made, with \var{index}
484incrementing by one each time. In other words, the presence of the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000485\method{__getitem__()} method doesn't mean that using \code{file[5]}
486to randomly access the sixth element will work, though it really should.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000487
488In Python 2.2, iteration can be implemented separately, and
489\method{__getitem__()} methods can be limited to classes that really
490do support random access. The basic idea of iterators is quite
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000491simple. A new built-in function, \function{iter(obj)} or
492\code{iter(\var{C}, \var{sentinel})}, is used to get an iterator.
493\function{iter(obj)} returns an iterator for the object \var{obj},
494while \code{iter(\var{C}, \var{sentinel})} returns an iterator that
495will invoke the callable object \var{C} until it returns
496\var{sentinel} to signal that the iterator is done.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000497
498Python classes can define an \method{__iter__()} method, which should
499create and return a new iterator for the object; if the object is its
500own iterator, this method can just return \code{self}. In particular,
501iterators will usually be their own iterators. Extension types
502implemented in C can implement a \code{tp_iter} function in order to
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000503return an iterator, and extension types that want to behave as
504iterators can define a \code{tp_iternext} function.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000505
506So what do iterators do? They have one required method,
507\method{next()}, which takes no arguments and returns the next value.
508When there are no more values to be returned, calling \method{next()}
509should raise the \exception{StopIteration} exception.
510
511\begin{verbatim}
512>>> L = [1,2,3]
513>>> i = iter(L)
514>>> print i
515<iterator object at 0x8116870>
516>>> i.next()
5171
518>>> i.next()
5192
520>>> i.next()
5213
522>>> i.next()
523Traceback (most recent call last):
524 File "<stdin>", line 1, in ?
525StopIteration
526>>>
527\end{verbatim}
528
529In 2.2, Python's \keyword{for} statement no longer expects a sequence;
530it expects something for which \function{iter()} will return something.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000531For backward compatibility and convenience, an iterator is
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000532automatically constructed for sequences that don't implement
533\method{__iter__()} or a \code{tp_iter} slot, so \code{for i in
534[1,2,3]} will still work. Wherever the Python interpreter loops over
535a sequence, it's been changed to use the iterator protocol. This
536means you can do things like this:
537
538\begin{verbatim}
539>>> i = iter(L)
540>>> a,b,c = i
541>>> a,b,c
542(1, 2, 3)
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000543\end{verbatim}
544
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000545Iterator support has been added to some of Python's basic types.
Fred Drake0d002542001-07-17 13:55:33 +0000546Calling \function{iter()} on a dictionary will return an iterator
Andrew M. Kuchling6ea9f0b2001-07-17 14:50:31 +0000547which loops over its keys:
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000548
549\begin{verbatim}
550>>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,
551... 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
552>>> for key in m: print key, m[key]
553...
554Mar 3
555Feb 2
556Aug 8
557Sep 9
558May 5
559Jun 6
560Jul 7
561Jan 1
562Apr 4
563Nov 11
564Dec 12
565Oct 10
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000566\end{verbatim}
567
568That's just the default behaviour. If you want to iterate over keys,
569values, or key/value pairs, you can explicitly call the
570\method{iterkeys()}, \method{itervalues()}, or \method{iteritems()}
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000571methods to get an appropriate iterator. In a minor related change,
572the \keyword{in} operator now works on dictionaries, so
573\code{\var{key} in dict} is now equivalent to
574\code{dict.has_key(\var{key})}.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000575
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000576Files also provide an iterator, which calls the \method{readline()}
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000577method until there are no more lines in the file. This means you can
578now read each line of a file using code like this:
579
580\begin{verbatim}
581for line in file:
582 # do something for each line
583\end{verbatim}
584
585Note that you can only go forward in an iterator; there's no way to
586get the previous element, reset the iterator, or make a copy of it.
Fred Drake0d002542001-07-17 13:55:33 +0000587An iterator object could provide such additional capabilities, but the
588iterator protocol only requires a \method{next()} method.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000589
590\begin{seealso}
591
592\seepep{234}{Iterators}{Written by Ka-Ping Yee and GvR; implemented
593by the Python Labs crew, mostly by GvR and Tim Peters.}
594
595\end{seealso}
596
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000597
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000598%======================================================================
599\section{PEP 255: Simple Generators}
600
601Generators are another new feature, one that interacts with the
602introduction of iterators.
603
604You're doubtless familiar with how function calls work in Python or
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000605C. When you call a function, it gets a private namespace where its local
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000606variables are created. When the function reaches a \keyword{return}
607statement, the local variables are destroyed and the resulting value
608is returned to the caller. A later call to the same function will get
609a fresh new set of local variables. But, what if the local variables
610weren't destroyed on exiting a function? What if you could later
611resume the function where it left off? This is what generators
612provide; they can be thought of as resumable functions.
613
614Here's the simplest example of a generator function:
615
616\begin{verbatim}
617def generate_ints(N):
618 for i in range(N):
619 yield i
620\end{verbatim}
621
622A new keyword, \keyword{yield}, was introduced for generators. Any
623function containing a \keyword{yield} statement is a generator
624function; this is detected by Python's bytecode compiler which
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000625compiles the function specially as a result. Because a new keyword was
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000626introduced, generators must be explicitly enabled in a module by
627including a \code{from __future__ import generators} statement near
628the top of the module's source code. In Python 2.3 this statement
629will become unnecessary.
630
631When you call a generator function, it doesn't return a single value;
632instead it returns a generator object that supports the iterator
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000633protocol. On executing the \keyword{yield} statement, the generator
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000634outputs the value of \code{i}, similar to a \keyword{return}
635statement. The big difference between \keyword{yield} and a
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000636\keyword{return} statement is that on reaching a \keyword{yield} the
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000637generator's state of execution is suspended and local variables are
638preserved. On the next call to the generator's \code{.next()} method,
639the function will resume executing immediately after the
640\keyword{yield} statement. (For complicated reasons, the
641\keyword{yield} statement isn't allowed inside the \keyword{try} block
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000642of a \code{try...finally} statement; read \pep{255} for a full
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000643explanation of the interaction between \keyword{yield} and
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000644exceptions.)
645
646Here's a sample usage of the \function{generate_ints} generator:
647
648\begin{verbatim}
649>>> gen = generate_ints(3)
650>>> gen
651<generator object at 0x8117f90>
652>>> gen.next()
6530
654>>> gen.next()
6551
656>>> gen.next()
6572
658>>> gen.next()
659Traceback (most recent call last):
660 File "<stdin>", line 1, in ?
661 File "<stdin>", line 2, in generate_ints
662StopIteration
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000663\end{verbatim}
664
665You could equally write \code{for i in generate_ints(5)}, or
666\code{a,b,c = generate_ints(3)}.
667
668Inside a generator function, the \keyword{return} statement can only
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000669be used without a value, and signals the end of the procession of
670values; afterwards the generator cannot return any further values.
671\keyword{return} with a value, such as \code{return 5}, is a syntax
672error inside a generator function. The end of the generator's results
673can also be indicated by raising \exception{StopIteration} manually,
674or by just letting the flow of execution fall off the bottom of the
675function.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000676
677You could achieve the effect of generators manually by writing your
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000678own class and storing all the local variables of the generator as
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000679instance variables. For example, returning a list of integers could
680be done by setting \code{self.count} to 0, and having the
681\method{next()} method increment \code{self.count} and return it.
Andrew M. Kuchlingc32cc7c2001-07-17 18:25:01 +0000682However, for a moderately complicated generator, writing a
683corresponding class would be much messier.
684\file{Lib/test/test_generators.py} contains a number of more
685interesting examples. The simplest one implements an in-order
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000686traversal of a tree using generators recursively.
687
688\begin{verbatim}
689# A recursive generator that generates Tree leaves in in-order.
690def inorder(t):
691 if t:
692 for x in inorder(t.left):
693 yield x
694 yield t.label
695 for x in inorder(t.right):
696 yield x
697\end{verbatim}
698
699Two other examples in \file{Lib/test/test_generators.py} produce
700solutions for the N-Queens problem (placing $N$ queens on an $NxN$
701chess board so that no queen threatens another) and the Knight's Tour
702(a route that takes a knight to every square of an $NxN$ chessboard
703without visiting any square twice).
704
705The idea of generators comes from other programming languages,
706especially Icon (\url{http://www.cs.arizona.edu/icon/}), where the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000707idea of generators is central. In Icon, every
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000708expression and function call behaves like a generator. One example
709from ``An Overview of the Icon Programming Language'' at
710\url{http://www.cs.arizona.edu/icon/docs/ipd266.htm} gives an idea of
711what this looks like:
712
713\begin{verbatim}
714sentence := "Store it in the neighboring harbor"
715if (i := find("or", sentence)) > 5 then write(i)
716\end{verbatim}
717
718The \function{find()} function returns the indexes at which the
719substring ``or'' is found: 3, 23, 33. In the \keyword{if} statement,
720\code{i} is first assigned a value of 3, but 3 is less than 5, so the
721comparison fails, and Icon retries it with the second value of 23. 23
722is greater than 5, so the comparison now succeeds, and the code prints
723the value 23 to the screen.
724
725Python doesn't go nearly as far as Icon in adopting generators as a
726central concept. Generators are considered a new part of the core
727Python language, but learning or using them isn't compulsory; if they
728don't solve any problems that you have, feel free to ignore them.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000729One novel feature of Python's interface as compared to
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000730Icon's is that a generator's state is represented as a concrete object
731that can be passed around to other functions or stored in a data
732structure.
733
734\begin{seealso}
735
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +0000736\seepep{255}{Simple Generators}{Written by Neil Schemenauer, Tim
737Peters, Magnus Lie Hetland. Implemented mostly by Neil Schemenauer
738and Tim Peters, with other fixes from the Python Labs crew.}
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000739
740\end{seealso}
741
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000742
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000743%======================================================================
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000744\section{PEP 237: Unifying Long Integers and Integers}
745
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000746In recent versions, the distinction between regular integers, which
747are 32-bit values on most machines, and long integers, which can be of
748arbitrary size, was becoming an annoyance. For example, on platforms
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000749that support files larger than \code{2**32} bytes, the
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000750\method{tell()} method of file objects has to return a long integer.
751However, there were various bits of Python that expected plain
752integers and would raise an error if a long integer was provided
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +0000753instead. For example, in Python 1.5, only regular integers
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000754could be used as a slice index, and \code{'abc'[1L:]} would raise a
755\exception{TypeError} exception with the message 'slice index must be
756int'.
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000757
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000758Python 2.2 will shift values from short to long integers as required.
759The 'L' suffix is no longer needed to indicate a long integer literal,
760as now the compiler will choose the appropriate type. (Using the 'L'
761suffix will be discouraged in future 2.x versions of Python,
762triggering a warning in Python 2.4, and probably dropped in Python
7633.0.) Many operations that used to raise an \exception{OverflowError}
764will now return a long integer as their result. For example:
765
766\begin{verbatim}
767>>> 1234567890123
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +00007681234567890123L
769>>> 2 ** 64
77018446744073709551616L
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000771\end{verbatim}
772
773In most cases, integers and long integers will now be treated
774identically. You can still distinguish them with the
775\function{type()} built-in function, but that's rarely needed. The
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000776\function{int()} constructor will now return a long integer if the value
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000777is large enough.
778
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +0000779\begin{seealso}
780
781\seepep{237}{Unifying Long Integers and Integers}{Written by
782Moshe Zadka and Guido van Rossum. Implemented mostly by Guido van Rossum.}
783
784\end{seealso}
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000785
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +0000786
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +0000787%======================================================================
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000788\section{PEP 238: Changing the Division Operator}
789
790The most controversial change in Python 2.2 is the start of an effort
791to fix an old design flaw that's been in Python from the beginning.
792Currently Python's division operator, \code{/}, behaves like C's
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000793division operator when presented with two integer arguments: it
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000794returns an integer result that's truncated down when there would be
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000795a fractional part. For example, \code{3/2} is 1, not 1.5, and
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000796\code{(-1)/2} is -1, not -0.5. This means that the results of divison
797can vary unexpectedly depending on the type of the two operands and
798because Python is dynamically typed, it can be difficult to determine
799the possible types of the operands.
800
801(The controversy is over whether this is \emph{really} a design flaw,
802and whether it's worth breaking existing code to fix this. It's
803caused endless discussions on python-dev and in July erupted into an
804storm of acidly sarcastic postings on \newsgroup{comp.lang.python}. I
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000805won't argue for either side here and will stick to describing what's
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000806implemented in 2.2. Read \pep{238} for a summary of arguments and
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000807counter-arguments.)
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000808
809Because this change might break code, it's being introduced very
810gradually. Python 2.2 begins the transition, but the switch won't be
811complete until Python 3.0.
812
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000813First, I'll borrow some terminology from \pep{238}. ``True division'' is the
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000814division that most non-programmers are familiar with: 3/2 is 1.5, 1/4
815is 0.25, and so forth. ``Floor division'' is what Python's \code{/}
816operator currently does when given integer operands; the result is the
817floor of the value returned by true division. ``Classic division'' is
818the current mixed behaviour of \code{/}; it returns the result of
819floor division when the operands are integers, and returns the result
820of true division when one of the operands is a floating-point number.
821
822Here are the changes 2.2 introduces:
823
824\begin{itemize}
825
826\item A new operator, \code{//}, is the floor division operator.
827(Yes, we know it looks like \Cpp's comment symbol.) \code{//}
828\emph{always} returns the floor divison no matter what the types of
829its operands are, so \code{1 // 2} is 0 and \code{1.0 // 2.0} is also
8300.0.
831
832\code{//} is always available in Python 2.2; you don't need to enable
833it using a \code{__future__} statement.
834
Andrew M. Kuchling4f9e2202001-10-29 18:09:42 +0000835\item By including a \code{from __future__ import division} in a
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000836module, the \code{/} operator will be changed to return the result of
837true division, so \code{1/2} is 0.5. Without the \code{__future__}
838statement, \code{/} still means classic division. The default meaning
839of \code{/} will not change until Python 3.0.
840
841\item Classes can define methods called \method{__truediv__} and
842\method{__floordiv__} to overload the two division operators. At the
843C level, there are also slots in the \code{PyNumberMethods} structure
844so extension types can define the two operators.
845
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000846\item Python 2.2 supports some command-line arguments for testing
847whether code will works with the changed division semantics. Running
848python with \programopt{-Q warn} will cause a warning to be issued
849whenever division is applied to two integers. You can use this to
850find code that's affected by the change and fix it. By default,
851Python 2.2 will simply perform classic division without a warning; the
852warning will be turned on by default in Python 2.3.
Andrew M. Kuchling9e9c1352001-08-11 03:06:50 +0000853
854\end{itemize}
855
856\begin{seealso}
857
858\seepep{238}{Changing the Division Operator}{Written by Moshe Zadka and
859Guido van Rossum. Implemented by Guido van Rossum..}
860
861\end{seealso}
862
863
864%======================================================================
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +0000865\section{Unicode Changes}
866
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000867Python's Unicode support has been enhanced a bit in 2.2. Unicode
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000868strings are usually stored as UCS-2, as 16-bit unsigned integers.
Andrew M. Kuchlingf5fec3c2001-07-19 01:48:08 +0000869Python 2.2 can also be compiled to use UCS-4, 32-bit unsigned
870integers, as its internal encoding by supplying
871\longprogramopt{enable-unicode=ucs4} to the configure script. When
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000872built to use UCS-4 (a ``wide Python''), the interpreter can natively
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000873handle Unicode characters from U+000000 to U+110000, so the range of
874legal values for the \function{unichr()} function is expanded
875accordingly. Using an interpreter compiled to use UCS-2 (a ``narrow
876Python''), values greater than 65535 will still cause
877\function{unichr()} to raise a \exception{ValueError} exception.
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000878
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000879% XXX is this still unimplemented?
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000880All this is the province of the still-unimplemented \pep{261}, ``Support
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000881for `wide' Unicode characters''; consult it for further details, and
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +0000882please offer comments on the PEP and on your experiences with the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00008832.2 beta releases.
Andrew M. Kuchling279e7442001-10-22 02:03:40 +0000884% XXX update previous line once 2.2 reaches beta or final.
Andrew M. Kuchlingab010872001-07-19 14:59:53 +0000885
886Another change is much simpler to explain. Since their introduction,
887Unicode strings have supported an \method{encode()} method to convert
888the string to a selected encoding such as UTF-8 or Latin-1. A
889symmetric \method{decode(\optional{\var{encoding}})} method has been
890added to 8-bit strings (though not to Unicode strings) in 2.2.
891\method{decode()} assumes that the string is in the specified encoding
892and decodes it, returning whatever is returned by the codec.
893
894Using this new feature, codecs have been added for tasks not directly
895related to Unicode. For example, codecs have been added for
896uu-encoding, MIME's base64 encoding, and compression with the
897\module{zlib} module:
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +0000898
899\begin{verbatim}
900>>> s = """Here is a lengthy piece of redundant, overly verbose,
901... and repetitive text.
902... """
903>>> data = s.encode('zlib')
904>>> data
905'x\x9c\r\xc9\xc1\r\x80 \x10\x04\xc0?Ul...'
906>>> data.decode('zlib')
907'Here is a lengthy piece of redundant, overly verbose,\nand repetitive text.\n'
908>>> print s.encode('uu')
909begin 666 <data>
910M2&5R92!I<R!A(&QE;F=T:'D@<&EE8V4@;V8@<F5D=6YD86YT+"!O=F5R;'D@
911>=F5R8F]S92P*86YD(')E<&5T:71I=F4@=&5X="X*
912
913end
914>>> "sheesh".encode('rot-13')
915'furrfu'
916\end{verbatim}
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +0000917
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000918To convert a class instance to Unicode, a \method{__unicode__} method
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000919can be defined by a class, analogous to \method{__str__}.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000920
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000921\method{encode()}, \method{decode()}, and \method{__unicode__} were
922implemented by Marc-Andr\'e Lemburg. The changes to support using
923UCS-4 internally were implemented by Fredrik Lundh and Martin von
924L\"owis.
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +0000925
Andrew M. Kuchlingf5fec3c2001-07-19 01:48:08 +0000926\begin{seealso}
927
928\seepep{261}{Support for `wide' Unicode characters}{PEP written by
929Paul Prescod. Not yet accepted or fully implemented.}
930
931\end{seealso}
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +0000932
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +0000933
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000934%======================================================================
935\section{PEP 227: Nested Scopes}
936
937In Python 2.1, statically nested scopes were added as an optional
938feature, to be enabled by a \code{from __future__ import
939nested_scopes} directive. In 2.2 nested scopes no longer need to be
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +0000940specially enabled, and are now always present. The rest of this section
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +0000941is a copy of the description of nested scopes from my ``What's New in
942Python 2.1'' document; if you read it when 2.1 came out, you can skip
943the rest of this section.
944
945The largest change introduced in Python 2.1, and made complete in 2.2,
946is to Python's scoping rules. In Python 2.0, at any given time there
947are at most three namespaces used to look up variable names: local,
948module-level, and the built-in namespace. This often surprised people
949because it didn't match their intuitive expectations. For example, a
950nested recursive function definition doesn't work:
951
952\begin{verbatim}
953def f():
954 ...
955 def g(value):
956 ...
957 return g(value-1) + 1
958 ...
959\end{verbatim}
960
961The function \function{g()} will always raise a \exception{NameError}
962exception, because the binding of the name \samp{g} isn't in either
963its local namespace or in the module-level namespace. This isn't much
964of a problem in practice (how often do you recursively define interior
965functions like this?), but this also made using the \keyword{lambda}
966statement clumsier, and this was a problem in practice. In code which
967uses \keyword{lambda} you can often find local variables being copied
968by passing them as the default values of arguments.
969
970\begin{verbatim}
971def find(self, name):
972 "Return list of any entries equal to 'name'"
973 L = filter(lambda x, name=name: x == name,
974 self.list_attribute)
975 return L
976\end{verbatim}
977
978The readability of Python code written in a strongly functional style
979suffers greatly as a result.
980
981The most significant change to Python 2.2 is that static scoping has
982been added to the language to fix this problem. As a first effect,
983the \code{name=name} default argument is now unnecessary in the above
984example. Put simply, when a given variable name is not assigned a
985value within a function (by an assignment, or the \keyword{def},
986\keyword{class}, or \keyword{import} statements), references to the
987variable will be looked up in the local namespace of the enclosing
988scope. A more detailed explanation of the rules, and a dissection of
989the implementation, can be found in the PEP.
990
991This change may cause some compatibility problems for code where the
992same variable name is used both at the module level and as a local
993variable within a function that contains further function definitions.
994This seems rather unlikely though, since such code would have been
995pretty confusing to read in the first place.
996
997One side effect of the change is that the \code{from \var{module}
998import *} and \keyword{exec} statements have been made illegal inside
999a function scope under certain conditions. The Python reference
1000manual has said all along that \code{from \var{module} import *} is
1001only legal at the top level of a module, but the CPython interpreter
1002has never enforced this before. As part of the implementation of
1003nested scopes, the compiler which turns Python source into bytecodes
1004has to generate different code to access variables in a containing
1005scope. \code{from \var{module} import *} and \keyword{exec} make it
1006impossible for the compiler to figure this out, because they add names
1007to the local namespace that are unknowable at compile time.
1008Therefore, if a function contains function definitions or
1009\keyword{lambda} expressions with free variables, the compiler will
1010flag this by raising a \exception{SyntaxError} exception.
1011
1012To make the preceding explanation a bit clearer, here's an example:
1013
1014\begin{verbatim}
1015x = 1
1016def f():
1017 # The next line is a syntax error
1018 exec 'x=2'
1019 def g():
1020 return x
1021\end{verbatim}
1022
1023Line 4 containing the \keyword{exec} statement is a syntax error,
1024since \keyword{exec} would define a new local variable named \samp{x}
1025whose value should be accessed by \function{g()}.
1026
1027This shouldn't be much of a limitation, since \keyword{exec} is rarely
1028used in most Python code (and when it is used, it's often a sign of a
1029poor design anyway).
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001030
1031\begin{seealso}
1032
1033\seepep{227}{Statically Nested Scopes}{Written and implemented by
1034Jeremy Hylton.}
1035
1036\end{seealso}
1037
Andrew M. Kuchlinga43e7032001-06-27 20:32:12 +00001038
1039%======================================================================
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001040\section{New and Improved Modules}
1041
1042\begin{itemize}
1043
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001044 \item The \module{xmlrpclib} module was contributed to the standard
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001045 library by Fredrik Lundh, provding support for writing XML-RPC
1046 clients. XML-RPC is a simple remote procedure call protocol built on
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +00001047 top of HTTP and XML. For example, the following snippet retrieves a
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001048 list of RSS channels from the O'Reilly Network, and then
1049 lists the recent headlines for one channel:
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001050
1051\begin{verbatim}
1052import xmlrpclib
1053s = xmlrpclib.Server(
1054 'http://www.oreillynet.com/meerkat/xml-rpc/server.php')
1055channels = s.meerkat.getChannels()
1056# channels is a list of dictionaries, like this:
1057# [{'id': 4, 'title': 'Freshmeat Daily News'}
1058# {'id': 190, 'title': '32Bits Online'},
1059# {'id': 4549, 'title': '3DGamers'}, ... ]
1060
1061# Get the items for one channel
1062items = s.meerkat.getItems( {'channel': 4} )
1063
1064# 'items' is another list of dictionaries, like this:
1065# [{'link': 'http://freshmeat.net/releases/52719/',
1066# 'description': 'A utility which converts HTML to XSL FO.',
1067# 'title': 'html2fo 0.3 (Default)'}, ... ]
1068\end{verbatim}
1069
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +00001070The \module{SimpleXMLRPCServer} module makes it easy to create
1071straightforward XML-RPC servers. See \url{http://www.xmlrpc.com/} for
1072more information about XML-RPC.
1073
1074 \item The new \module{hmac} module implements implements the HMAC
1075 algorithm described by \rfc{2104}.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001076
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001077 \item The Python profiler has been extensively reworked and various
1078 errors in its output have been corrected. (Contributed by Fred
1079 Fred~L. Drake, Jr. and Tim Peters.)
1080
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001081 \item The \module{socket} module can be compiled to support IPv6;
Andrew M. Kuchlingddeb1352001-07-16 14:35:52 +00001082 specify the \longprogramopt{enable-ipv6} option to Python's configure
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001083 script. (Contributed by Jun-ichiro ``itojun'' Hagino.)
1084
1085 \item Two new format characters were added to the \module{struct}
1086 module for 64-bit integers on platforms that support the C
1087 \ctype{long long} type. \samp{q} is for a signed 64-bit integer,
1088 and \samp{Q} is for an unsigned one. The value is returned in
1089 Python's long integer type. (Contributed by Tim Peters.)
1090
1091 \item In the interpreter's interactive mode, there's a new built-in
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001092 function \function{help()} that uses the \module{pydoc} module
1093 introduced in Python 2.1 to provide interactive help.
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001094 \code{help(\var{object})} displays any available help text about
1095 \var{object}. \code{help()} with no argument puts you in an online
1096 help utility, where you can enter the names of functions, classes,
1097 or modules to read their help text.
1098 (Contributed by Guido van Rossum, using Ka-Ping Yee's \module{pydoc} module.)
1099
1100 \item Various bugfixes and performance improvements have been made
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +00001101 to the SRE engine underlying the \module{re} module. For example,
Andrew M. Kuchlingbeb38552001-10-22 14:11:06 +00001102 the \function{re.sub()} and \function{re.split()} functions have
1103 been rewritten in C. Another contributed patch speeds up certain
1104 Unicode character ranges by a factor of two. (SRE is maintained by
1105 Fredrik Lundh. The BIGCHARSET patch was contributed by Martin von
1106 L\"owis.)
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001107
Andrew M. Kuchling1efd7ad2001-09-14 16:19:27 +00001108 \item The \module{smtplib} module now supports \rfc{2487}, ``Secure
1109 SMTP over TLS'', so it's now possible to encrypt the SMTP traffic
1110 between a Python program and the mail transport agent being handed a
1111 message. (Contributed by Gerhard H\"aring.)
1112
Andrew M. Kuchlinga6d2a042001-07-20 18:34:34 +00001113 \item The \module{imaplib} module, maintained by Piers Lauder, has
1114 support for several new extensions: the NAMESPACE extension defined
1115 in \rfc{2342}, SORT, GETACL and SETACL. (Contributed by Anthony
1116 Baxter and Michel Pelletier.)
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001117
Andrew M. Kuchlingd4707e32001-09-28 20:46:46 +00001118 \item The \module{rfc822} module's parsing of email addresses is now
1119 compliant with \rfc{2822}, an update to \rfc{822}. (The module's
1120 name is \emph{not} going to be changed to \samp{rfc2822}.) A new
1121 package, \module{email}, has also been added for parsing and
1122 generating e-mail messages. (Contributed by Barry Warsaw, and
1123 arising out of his work on Mailman.)
Andrew M. Kuchling77707672001-07-31 15:51:16 +00001124
1125 \item New constants \constant{ascii_letters},
1126 \constant{ascii_lowercase}, and \constant{ascii_uppercase} were
1127 added to the \module{string} module. There were several modules in
1128 the standard library that used \constant{string.letters} to mean the
1129 ranges A-Za-z, but that assumption is incorrect when locales are in
1130 use, because \constant{string.letters} varies depending on the set
1131 of legal characters defined by the current locale. The buggy
1132 modules have all been fixed to use \constant{ascii_letters} instead.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001133 (Reported by an unknown person; fixed by Fred~L. Drake, Jr.)
Andrew M. Kuchling77707672001-07-31 15:51:16 +00001134
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +00001135 \item The \module{mimetypes} module now makes it easier to use
1136 alternative MIME-type databases by the addition of a
1137 \class{MimeTypes} class, which takes a list of filenames to be
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001138 parsed. (Contributed by Fred~L. Drake, Jr.)
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +00001139
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +00001140 \item A \class{Timer} class was added to the \module{threading}
1141 module that allows scheduling an activity to happen at some future
1142 time. (Contributed by Itamar Shtull-Trauring.)
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +00001143
Andrew M. Kuchling77707672001-07-31 15:51:16 +00001144\end{itemize}
1145
1146
1147%======================================================================
1148\section{Interpreter Changes and Fixes}
1149
1150Some of the changes only affect people who deal with the Python
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001151interpreter at the C level because they're writing Python extension modules,
Andrew M. Kuchling77707672001-07-31 15:51:16 +00001152embedding the interpreter, or just hacking on the interpreter itself.
1153If you only write Python code, none of the changes described here will
1154affect you very much.
1155
1156\begin{itemize}
1157
1158 \item Profiling and tracing functions can now be implemented in C,
1159 which can operate at much higher speeds than Python-based functions
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001160 and should reduce the overhead of profiling and tracing. This
1161 will be of interest to authors of development environments for
Andrew M. Kuchling77707672001-07-31 15:51:16 +00001162 Python. Two new C functions were added to Python's API,
1163 \cfunction{PyEval_SetProfile()} and \cfunction{PyEval_SetTrace()}.
1164 The existing \function{sys.setprofile()} and
1165 \function{sys.settrace()} functions still exist, and have simply
1166 been changed to use the new C-level interface. (Contributed by Fred
1167 L. Drake, Jr.)
1168
1169 \item Another low-level API, primarily of interest to implementors
1170 of Python debuggers and development tools, was added.
1171 \cfunction{PyInterpreterState_Head()} and
1172 \cfunction{PyInterpreterState_Next()} let a caller walk through all
1173 the existing interpreter objects;
1174 \cfunction{PyInterpreterState_ThreadHead()} and
1175 \cfunction{PyThreadState_Next()} allow looping over all the thread
1176 states for a given interpreter. (Contributed by David Beazley.)
1177
1178 \item A new \samp{et} format sequence was added to
1179 \cfunction{PyArg_ParseTuple}; \samp{et} takes both a parameter and
1180 an encoding name, and converts the parameter to the given encoding
1181 if the parameter turns out to be a Unicode string, or leaves it
1182 alone if it's an 8-bit string, assuming it to already be in the
1183 desired encoding. This differs from the \samp{es} format character,
1184 which assumes that 8-bit strings are in Python's default ASCII
1185 encoding and converts them to the specified new encoding.
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001186 (Contributed by M.-A. Lemburg, and used for the MBCS support on
1187 Windows described in the following section.)
Andrew M. Kuchlingcf31d5d2001-10-26 20:37:55 +00001188
1189 \item A different argument parsing function,
1190 \cfunction{PyArg_UnpackTuple()}, has been added that's simpler and
1191 presumably faster. Instead of specifying a format string, the
1192 caller simply gives the minimum and maximum number of arguments
1193 expected, and a set of pointers to \code{PyObject*} variables that
1194 will be filled in with argument values.
1195
Andrew M. Kuchling0ab31b82001-08-29 01:16:54 +00001196 \item Two new flags \constant{METH_NOARGS} and \constant{METH_O} are
1197 available in method definition tables to simplify implementation of
1198 methods with no arguments or a single untyped argument. Calling
1199 such methods is more efficient than calling a corresponding method
1200 that uses \constant{METH_VARARGS}.
1201 Also, the old \constant{METH_OLDARGS} style of writing C methods is
1202 now officially deprecated.
1203
1204\item
1205 Two new wrapper functions, \cfunction{PyOS_snprintf()} and
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001206 \cfunction{PyOS_vsnprintf()} were added to provide
Andrew M. Kuchling0ab31b82001-08-29 01:16:54 +00001207 cross-platform implementations for the relatively new
1208 \cfunction{snprintf()} and \cfunction{vsnprintf()} C lib APIs. In
1209 contrast to the standard \cfunction{sprintf()} and
1210 \cfunction{vsprintf()} functions, the Python versions check the
1211 bounds of the buffer used to protect against buffer overruns.
1212 (Contributed by M.-A. Lemburg.)
Andrew M. Kuchling77707672001-07-31 15:51:16 +00001213
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001214\end{itemize}
1215
1216
1217%======================================================================
1218\section{Other Changes and Fixes}
1219
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +00001220% XXX update the patch and bug figures as we go
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001221As usual there were a bunch of other improvements and bugfixes
1222scattered throughout the source tree. A search through the CVS change
Andrew M. Kuchling32e32322001-10-22 15:32:05 +00001223logs finds there were 312 patches applied, and 391 bugs fixed; both
Andrew M. Kuchling4dbf8712001-07-16 02:17:14 +00001224figures are likely to be underestimates. Some of the more notable
1225changes are:
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001226
1227\begin{itemize}
1228
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +00001229 \item The code for the MacOS port for Python, maintained by Jack
1230 Jansen, is now kept in the main Python CVS tree, and many changes
Andrew M. Kuchling279e7442001-10-22 02:03:40 +00001231 have been made to support MacOS~X.
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +00001232
1233The most significant change is the ability to build Python as a
1234framework, enabled by supplying the \longprogramopt{enable-framework}
1235option to the configure script when compiling Python. According to
1236Jack Jansen, ``This installs a self-contained Python installation plus
Andrew M. Kuchling279e7442001-10-22 02:03:40 +00001237the OS~X framework "glue" into
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +00001238\file{/Library/Frameworks/Python.framework} (or another location of
1239choice). For now there is little immediate added benefit to this
1240(actually, there is the disadvantage that you have to change your PATH
1241to be able to find Python), but it is the basis for creating a
1242full-blown Python application, porting the MacPython IDE, possibly
1243using Python as a standard OSA scripting language and much more.''
1244
1245Most of the MacPython toolbox modules, which interface to MacOS APIs
Andrew M. Kuchling279e7442001-10-22 02:03:40 +00001246such as windowing, QuickTime, scripting, etc. have been ported to OS~X,
Andrew M. Kuchlingbeb38552001-10-22 14:11:06 +00001247but they've been left commented out in \file{setup.py}. People who want
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +00001248to experiment with these modules can uncomment them manually.
1249
1250% Jack's original comments:
1251%The main change is the possibility to build Python as a
1252%framework. This installs a self-contained Python installation plus the
1253%OSX framework "glue" into /Library/Frameworks/Python.framework (or
1254%another location of choice). For now there is little immedeate added
1255%benefit to this (actually, there is the disadvantage that you have to
1256%change your PATH to be able to find Python), but it is the basis for
1257%creating a fullblown Python application, porting the MacPython IDE,
1258%possibly using Python as a standard OSA scripting language and much
1259%more. You enable this with "configure --enable-framework".
1260
1261%The other change is that most MacPython toolbox modules, which
1262%interface to all the MacOS APIs such as windowing, quicktime,
1263%scripting, etc. have been ported. Again, most of these are not of
1264%immedeate use, as they need a full application to be really useful, so
1265%they have been commented out in setup.py. People wanting to experiment
1266%can uncomment them. Gestalt and Internet Config modules are enabled by
1267%default.
Andrew M. Kuchling0e03f582001-08-30 21:30:16 +00001268
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +00001269 \item Keyword arguments passed to builtin functions that don't take them
1270 now cause a \exception{TypeError} exception to be raised, with the
1271 message "\var{function} takes no keyword arguments".
1272
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001273 \item Weak references, added in Python 2.1 as an extension module,
1274 are now part of the core because they're used in the implementation
1275 of new-style classes. The \exception{ReferenceError} exception has
1276 therefore moved from the \module{weakref} module to become a
1277 built-in exception.
1278
Andrew M. Kuchling94a7eba2001-08-15 15:55:48 +00001279 \item A new script, \file{Tools/scripts/cleanfuture.py} by Tim
1280 Peters, automatically removes obsolete \code{__future__} statements
1281 from Python source code.
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +00001282
Andrew M. Kuchling4f9e2202001-10-29 18:09:42 +00001283 \item An additional \var{flags} argument has been added to the
1284 built-in function \function{compile()}, so the behaviour of
1285 \code{__future__} statements can now be correctly observed in
1286 simulated shells, such as those presented by IDLE and other
1287 development environments. This is described in \pep{264}.
1288 (Contributed by Michael Hudson.)
1289
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +00001290 \item The new license introduced with Python 1.6 wasn't
1291 GPL-compatible. This is fixed by some minor textual changes to the
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001292 2.2 license, so it's now legal to embed Python inside a GPLed
1293 program again. Note that Python itself is not GPLed, but instead is
1294 under a license that's essentially equivalent to the BSD license,
1295 same as it always was. The license changes were also applied to the
1296 Python 2.0.1 and 2.1.1 releases.
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +00001297
Andrew M. Kuchlingf4ccf582001-07-31 01:11:36 +00001298 \item When presented with a Unicode filename on Windows, Python will
1299 now convert it to an MBCS encoded string, as used by the Microsoft
1300 file APIs. As MBCS is explicitly used by the file APIs, Python's
1301 choice of ASCII as the default encoding turns out to be an
1302 annoyance.
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +00001303 (Contributed by Mark Hammond with assistance from Marc-Andr\'e
1304 Lemburg.)
1305
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +00001306 \item Large file support is now enabled on Windows. (Contributed by
1307 Tim Peters.)
1308
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +00001309 \item The \file{Tools/scripts/ftpmirror.py} script
1310 now parses a \file{.netrc} file, if you have one.
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +00001311 (Contributed by Mike Romberg.)
Andrew M. Kuchling2cd712b2001-07-16 13:39:08 +00001312
Andrew M. Kuchling4cf52a92001-07-17 12:48:48 +00001313 \item Some features of the object returned by the
1314 \function{xrange()} function are now deprecated, and trigger
1315 warnings when they're accessed; they'll disappear in Python 2.3.
1316 \class{xrange} objects tried to pretend they were full sequence
1317 types by supporting slicing, sequence multiplication, and the
1318 \keyword{in} operator, but these features were rarely used and
1319 therefore buggy. The \method{tolist()} method and the
1320 \member{start}, \member{stop}, and \member{step} attributes are also
1321 being deprecated. At the C level, the fourth argument to the
1322 \cfunction{PyRange_New()} function, \samp{repeat}, has also been
1323 deprecated.
1324
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +00001325 \item There were a bunch of patches to the dictionary
1326 implementation, mostly to fix potential core dumps if a dictionary
1327 contains objects that sneakily changed their hash value, or mutated
1328 the dictionary they were contained in. For a while python-dev fell
Andrew M. Kuchling8b42f012001-10-22 02:00:11 +00001329 into a gentle rhythm of Michael Hudson finding a case that dumped
1330 core, Tim Peters fixing the bug, Michael finding another case, and round
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +00001331 and round it went.
1332
Andrew M. Kuchling33a3b632001-09-04 21:25:58 +00001333 \item On Windows, Python can now be compiled with Borland C thanks
1334 to a number of patches contributed by Stephen Hansen, though the
1335 result isn't fully functional yet. (But this \emph{is} progress...)
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +00001336
Andrew M. Kuchlingf4ccf582001-07-31 01:11:36 +00001337 \item Another Windows enhancement: Wise Solutions generously offered
1338 PythonLabs use of their InstallerMaster 8.1 system. Earlier
1339 PythonLabs Windows installers used Wise 5.0a, which was beginning to
1340 show its age. (Packaged up by Tim Peters.)
1341
Andrew M. Kuchling8c69c912001-08-07 14:28:58 +00001342 \item Files ending in \samp{.pyw} can now be imported on Windows.
1343 \samp{.pyw} is a Windows-only thing, used to indicate that a script
1344 needs to be run using PYTHONW.EXE instead of PYTHON.EXE in order to
1345 prevent a DOS console from popping up to display the output. This
1346 patch makes it possible to import such scripts, in case they're also
1347 usable as modules. (Implemented by David Bolen.)
1348
Andrew M. Kuchling8cfa9052001-07-19 01:19:59 +00001349 \item On platforms where Python uses the C \cfunction{dlopen()} function
1350 to load extension modules, it's now possible to set the flags used
1351 by \cfunction{dlopen()} using the \function{sys.getdlopenflags()} and
1352 \function{sys.setdlopenflags()} functions. (Contributed by Bram Stolk.)
Andrew M. Kuchling2f0047a2001-09-05 14:53:31 +00001353
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +00001354 \item The \function{pow()} built-in function no longer supports 3
1355 arguments when floating-point numbers are supplied.
Andrew M. Kuchling1497b622001-09-24 14:51:16 +00001356 \code{pow(\var{x}, \var{y}, \var{z})} returns \code{(x**y) \% z}, but
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +00001357 this is never useful for floating point numbers, and the final
1358 result varies unpredictably depending on the platform. A call such
Andrew M. Kuchlingd6e40e22001-09-10 16:18:50 +00001359 as \code{pow(2.0, 8.0, 7.0)} will now raise a \exception{TypeError}
Andrew M. Kuchling26c39bf2001-09-10 03:20:53 +00001360 exception.
Andrew M. Kuchling77707672001-07-31 15:51:16 +00001361
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001362\end{itemize}
1363
1364
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001365%======================================================================
1366\section{Acknowledgements}
1367
1368The author would like to thank the following people for offering
Andrew M. Kuchlingb83769c2001-10-26 20:07:03 +00001369suggestions, corrections and assistance with various drafts of this
1370article: Fred Bremmer, Keith Briggs, Andrew Dalke, Fred~L. Drake, Jr.,
Andrew M. Kuchling28369072001-10-29 15:47:33 +00001371Carel Fellinger, Mark Hammond, Stephen Hansen, Michael Hudson, Jack Jansen,
Andrew M. Kuchling7cc13de2001-10-30 14:22:11 +00001372Marc-Andr\'e Lemburg, Fredrik Lundh, Michael McLay, Tim Peters, Jens
1373Quade, Tom Reinhardt, Neil Schemenauer, Guido van Rossum.
Andrew M. Kuchlinga8defaa2001-05-05 16:37:29 +00001374
1375\end{document}