blob: 852f811eaca31882a554bb62674b5f17e0110bf4 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001****************************
Georg Brandl48310cd2009-01-03 21:18:54 +00002 What's New In Python 3.0
Georg Brandl116aa622007-08-15 14:28:22 +00003****************************
4
Guido van Rossum715287f2008-12-02 22:34:15 +00005.. XXX Add trademark info for Apple, Microsoft.
Georg Brandl116aa622007-08-15 14:28:22 +00006
Guido van Rossum4a98a2a2008-11-21 18:35:43 +00007:Author: Guido van Rossum
8:Release: |release|
9:Date: |today|
10
11.. $Id$
12 Rules for maintenance:
Georg Brandl48310cd2009-01-03 21:18:54 +000013
Georg Brandl5a165582007-08-31 06:15:01 +000014 * Anyone can add text to this document. Do not spend very much time
15 on the wording of your changes, because your text will probably
16 get rewritten to some degree.
Georg Brandl48310cd2009-01-03 21:18:54 +000017
Georg Brandl5a165582007-08-31 06:15:01 +000018 * The maintainer will go through Misc/NEWS periodically and add
19 changes; it's therefore more important to add your changes to
Guido van Rossum67d75ba2008-12-03 02:31:31 +000020 Misc/NEWS than to this file. (Note: I didn't get to this for 3.0.
21 GvR.)
Georg Brandl48310cd2009-01-03 21:18:54 +000022
Georg Brandl5a165582007-08-31 06:15:01 +000023 * This is not a complete list of every single change; completeness
24 is the purpose of Misc/NEWS. Some changes I consider too small
25 or esoteric to include. If such a change is added to the text,
26 I'll just remove it. (This is another reason you shouldn't spend
27 too much time on writing your addition.)
Georg Brandl48310cd2009-01-03 21:18:54 +000028
Georg Brandl5a165582007-08-31 06:15:01 +000029 * If you want to draw your new text to the attention of the
30 maintainer, add 'XXX' to the beginning of the paragraph or
31 section.
Georg Brandl48310cd2009-01-03 21:18:54 +000032
Georg Brandl5a165582007-08-31 06:15:01 +000033 * It's OK to just add a fragmentary note about a change. For
34 example: "XXX Describe the transmogrify() function added to the
35 socket module." The maintainer will research the change and
36 write the necessary text.
Georg Brandl48310cd2009-01-03 21:18:54 +000037
Georg Brandl5a165582007-08-31 06:15:01 +000038 * You can comment out your additions if you like, but it's not
39 necessary (especially when a final release is some months away).
Georg Brandl48310cd2009-01-03 21:18:54 +000040
Georg Brandl5a165582007-08-31 06:15:01 +000041 * Credit the author of a patch or bugfix. Just the name is
Guido van Rossum67d75ba2008-12-03 02:31:31 +000042 sufficient; the e-mail address isn't necessary. (Due to time
43 constraints I haven't managed to do this for 3.0. GvR.)
Georg Brandl48310cd2009-01-03 21:18:54 +000044
Georg Brandl5a165582007-08-31 06:15:01 +000045 * It's helpful to add the bug/patch number as a comment:
Georg Brandl48310cd2009-01-03 21:18:54 +000046
Georg Brandl5a165582007-08-31 06:15:01 +000047 % Patch 12345
48 XXX Describe the transmogrify() function added to the socket
49 module.
50 (Contributed by P.Y. Developer.)
Georg Brandl48310cd2009-01-03 21:18:54 +000051
Georg Brandl5a165582007-08-31 06:15:01 +000052 This saves the maintainer the effort of going through the SVN log
Guido van Rossum67d75ba2008-12-03 02:31:31 +000053 when researching a change. (Again, I didn't get to this for 3.0.
54 GvR.)
Georg Brandl116aa622007-08-15 14:28:22 +000055
Guido van Rossumeb3d8d42008-12-02 00:56:25 +000056This article explains the new features in Python 3.0, compared to 2.6.
Guido van Rossumc46ee542008-12-02 23:46:46 +000057Python 3.0, also known as "Python 3000" or "Py3K", is the first ever
Guido van Rossum08388ef2008-12-03 05:39:28 +000058*intentionally backwards incompatible* Python release. There are more
59changes than in a typical release, and more that are important for all
60Python users. Nevertheless, after digesting the changes, you'll find
61that Python really hasn't changed all that much -- by and large, we're
62mostly fixing well-known annoyances and warts, and removing a lot of
63old cruft.
Guido van Rossumb197f3c2007-08-31 00:37:00 +000064
65This article doesn't attempt to provide a complete specification of
Guido van Rossum08388ef2008-12-03 05:39:28 +000066all new features, but instead tries to give a convenient overview.
67For full details, you should refer to the documentation for Python
683.0, and/or the many PEPs referenced in the text. If you want to
69understand the complete implementation and design rationale for a
70particular feature, PEPs usually have more details than the regular
71documentation; but note that PEPs usually are not kept up-to-date once
72a feature has been fully implemented.
73
74Due to time constraints this document is not as complete as it should
75have been. As always for a new release, the ``Misc/NEWS`` file in the
76source distribution contains a wealth of detailed information about
77every small thing that was changed.
Georg Brandl116aa622007-08-15 14:28:22 +000078
Georg Brandl5a165582007-08-31 06:15:01 +000079.. Compare with previous release in 2 - 3 sentences here.
80.. add hyperlink when the documentation becomes available online.
Georg Brandl116aa622007-08-15 14:28:22 +000081
Georg Brandl5a165582007-08-31 06:15:01 +000082.. ======================================================================
83.. Large, PEP-level features and changes should be described here.
84.. Should there be a new section here for 3k migration?
85.. Or perhaps a more general section describing module changes/deprecation?
86.. sets module deprecated
87.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +000088
89
Guido van Rossumb197f3c2007-08-31 00:37:00 +000090Common Stumbling Blocks
91=======================
92
Guido van Rossum715287f2008-12-02 22:34:15 +000093This section lists those few changes that are most likely to trip you
94up if you're used to Python 2.5.
Guido van Rossumb197f3c2007-08-31 00:37:00 +000095
Guido van Rossumeb3d8d42008-12-02 00:56:25 +000096Print Is A Function
97-------------------
Guido van Rossumdff1c312007-09-06 14:46:41 +000098
Georg Brandl375aec22011-01-15 17:03:02 +000099The ``print`` statement has been replaced with a :func:`print`
Guido van Rossum715287f2008-12-02 22:34:15 +0000100function, with keyword arguments to replace most of the special syntax
Georg Brandl375aec22011-01-15 17:03:02 +0000101of the old ``print`` statement (:pep:`3105`). Examples::
Guido van Rossumdff1c312007-09-06 14:46:41 +0000102
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000103 Old: print "The answer is", 2*2
104 New: print("The answer is", 2*2)
Guido van Rossumdff1c312007-09-06 14:46:41 +0000105
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000106 Old: print x, # Trailing comma suppresses newline
107 New: print(x, end=" ") # Appends a space instead of a newline
Guido van Rossumdff1c312007-09-06 14:46:41 +0000108
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000109 Old: print # Prints a newline
110 New: print() # You must call the function!
Guido van Rossumdff1c312007-09-06 14:46:41 +0000111
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000112 Old: print >>sys.stderr, "fatal error"
113 New: print("fatal error", file=sys.stderr)
Guido van Rossumdff1c312007-09-06 14:46:41 +0000114
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000115 Old: print (x, y) # prints repr((x, y))
116 New: print((x, y)) # Not the same as print(x, y)!
Guido van Rossumdff1c312007-09-06 14:46:41 +0000117
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000118You can also customize the separator between items, e.g.::
Guido van Rossumdff1c312007-09-06 14:46:41 +0000119
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000120 print("There are <", 2**32, "> possibilities!", sep="")
Guido van Rossumdff1c312007-09-06 14:46:41 +0000121
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000122which produces::
Guido van Rossumdff1c312007-09-06 14:46:41 +0000123
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000124 There are <4294967296> possibilities!
Guido van Rossumdff1c312007-09-06 14:46:41 +0000125
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000126Note:
Guido van Rossumdff1c312007-09-06 14:46:41 +0000127
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000128* The :func:`print` function doesn't support the "softspace" feature of
Georg Brandl375aec22011-01-15 17:03:02 +0000129 the old ``print`` statement. For example, in Python 2.x,
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000130 ``print "A\n", "B"`` would write ``"A\nB\n"``; but in Python 3.0,
131 ``print("A\n", "B")`` writes ``"A\n B\n"``.
Guido van Rossumdff1c312007-09-06 14:46:41 +0000132
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000133* Initially, you'll be finding yourself typing the old ``print x``
134 a lot in interactive mode. Time to retrain your fingers to type
135 ``print(x)`` instead!
Guido van Rossumdff1c312007-09-06 14:46:41 +0000136
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000137* When using the ``2to3`` source-to-source conversion tool, all
Georg Brandl375aec22011-01-15 17:03:02 +0000138 ``print`` statements are automatically converted to
Guido van Rossum715287f2008-12-02 22:34:15 +0000139 :func:`print` function calls, so this is mostly a non-issue for
140 larger projects.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000141
Gregory P. Smithf3655c42008-12-02 23:52:53 +0000142Views And Iterators Instead Of Lists
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000143-------------------------------------
144
145Some well-known APIs no longer return lists:
146
147* :class:`dict` methods :meth:`dict.keys`, :meth:`dict.items` and
148 :meth:`dict.values` return "views" instead of lists. For example,
149 this no longer works: ``k = d.keys(); k.sort()``. Use ``k =
Raymond Hettingerab4c51c2008-12-03 15:04:01 +0000150 sorted(d)`` instead (this works in Python 2.5 too and is just
Guido van Rossum73961352008-12-03 00:54:52 +0000151 as efficient).
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000152
153* Also, the :meth:`dict.iterkeys`, :meth:`dict.iteritems` and
154 :meth:`dict.itervalues` methods are no longer supported.
Guido van Rossum4a98a2a2008-11-21 18:35:43 +0000155
Guido van Rossum08388ef2008-12-03 05:39:28 +0000156* :func:`map` and :func:`filter` return iterators. If you really need
157 a list, a quick fix is e.g. ``list(map(...))``, but a better fix is
158 often to use a list comprehension (especially when the original code
159 uses :keyword:`lambda`), or rewriting the code so it doesn't need a
160 list at all. Particularly tricky is :func:`map` invoked for the
161 side effects of the function; the correct transformation is to use a
162 regular :keyword:`for` loop (since creating a list would just be
163 wasteful).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000164
Guido van Rossum73961352008-12-03 00:54:52 +0000165* :func:`range` now behaves like :func:`xrange` used to behave, except
166 it works with values of arbitrary size. The latter no longer
167 exists.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000168
169* :func:`zip` now returns an iterator.
170
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000171Ordering Comparisons
172--------------------
173
174Python 3.0 has simplified the rules for ordering comparisons:
175
176* The ordering comparison operators (``<``, ``<=``, ``>=``, ``>``)
177 raise a TypeError exception when the operands don't have a
178 meaningful natural ordering. Thus, expressions like ``1 < ''``, ``0
Guido van Rossum08388ef2008-12-03 05:39:28 +0000179 > None`` or ``len <= len`` are no longer valid, and e.g. ``None <
180 None`` raises :exc:`TypeError` instead of returning
Georg Brandl375aec22011-01-15 17:03:02 +0000181 ``False``. A corollary is that sorting a heterogeneous list
Guido van Rossum08388ef2008-12-03 05:39:28 +0000182 no longer makes sense -- all the elements must be comparable to each
183 other. Note that this does not apply to the ``==`` and ``!=``
184 operators: objects of different incomparable types always compare
Guido van Rossum815427c2008-12-03 15:24:50 +0000185 unequal to each other.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000186
Guido van Rossumfedd1402008-12-03 04:15:35 +0000187* :meth:`builtin.sorted` and :meth:`list.sort` no longer accept the
188 *cmp* argument providing a comparison function. Use the *key*
189 argument instead. N.B. the *key* and *reverse* arguments are now
190 "keyword-only".
Kurt B. Kaisera1401012008-02-13 16:09:27 +0000191
Georg Brandl40c509d2008-12-06 08:14:46 +0000192* The :func:`cmp` function should be treated as gone, and the :meth:`__cmp__`
193 special method is no longer supported. Use :meth:`__lt__` for sorting,
194 :meth:`__eq__` with :meth:`__hash__`, and other rich comparisons as needed.
195 (If you really need the :func:`cmp` functionality, you could use the
196 expression ``(a > b) - (a < b)`` as the equivalent for ``cmp(a, b)``.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000197
198Integers
199--------
200
Guido van Rossum73961352008-12-03 00:54:52 +0000201* :pep:`0237`: Essentially, :class:`long` renamed to :class:`int`.
202 That is, there is only one built-in integral type, named
203 :class:`int`; but it behaves mostly like the old :class:`long` type.
Guido van Rossum4a98a2a2008-11-21 18:35:43 +0000204
Guido van Rossum73961352008-12-03 00:54:52 +0000205* :pep:`0238`: An expression like ``1/2`` returns a float. Use
206 ``1//2`` to get the truncating behavior. (The latter syntax has
207 existed for years, at least since Python 2.2.)
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000208
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000209* The :data:`sys.maxint` constant was removed, since there is no
Guido van Rossum08388ef2008-12-03 05:39:28 +0000210 longer a limit to the value of integers. However, :data:`sys.maxsize`
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000211 can be used as an integer larger than any practical list or string
212 index. It conforms to the implementation's "natural" integer size
213 and is typically the same as :data:`sys.maxint` in previous releases
214 on the same platform (assuming the same build options).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000215
Guido van Rossum73961352008-12-03 00:54:52 +0000216* The :func:`repr` of a long integer doesn't include the trailing ``L``
217 anymore, so code that unconditionally strips that character will
218 chop off the last digit instead. (Use :func:`str` instead.)
219
220* Octal literals are no longer of the form ``0720``; use ``0o720``
221 instead.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000222
Guido van Rossumfedd1402008-12-03 04:15:35 +0000223Text Vs. Data Instead Of Unicode Vs. 8-bit
224------------------------------------------
225
226Everything you thought you knew about binary data and Unicode has
227changed.
228
229* Python 3.0 uses the concepts of *text* and (binary) *data* instead
230 of Unicode strings and 8-bit strings. All text is Unicode; however
231 *encoded* Unicode is represented as binary data. The type used to
232 hold text is :class:`str`, the type used to hold data is
233 :class:`bytes`. The biggest difference with the 2.x situation is
234 that any attempt to mix text and data in Python 3.0 raises
Guido van Rossumb768d4f2008-12-03 04:18:17 +0000235 :exc:`TypeError`, whereas if you were to mix Unicode and 8-bit
Guido van Rossumfedd1402008-12-03 04:15:35 +0000236 strings in Python 2.x, it would work if the 8-bit string happened to
237 contain only 7-bit (ASCII) bytes, but you would get
Guido van Rossumb768d4f2008-12-03 04:18:17 +0000238 :exc:`UnicodeDecodeError` if it contained non-ASCII values. This
Guido van Rossumfedd1402008-12-03 04:15:35 +0000239 value-specific behavior has caused numerous sad faces over the
240 years.
241
242* As a consequence of this change in philosophy, pretty much all code
243 that uses Unicode, encodings or binary data most likely has to
244 change. The change is for the better, as in the 2.x world there
245 were numerous bugs having to do with mixing encoded and unencoded
246 text. To be prepared in Python 2.x, start using :class:`unicode`
247 for all unencoded text, and :class:`str` for binary or encoded data
248 only. Then the ``2to3`` tool will do most of the work for you.
249
250* You can no longer use ``u"..."`` literals for Unicode text.
251 However, you must use ``b"..."`` literals for binary data.
252
253* As the :class:`str` and :class:`bytes` types cannot be mixed, you
254 must always explicitly convert between them. Use :meth:`str.encode`
255 to go from :class:`str` to :class:`bytes`, and :meth:`bytes.decode`
256 to go from :class:`bytes` to :class:`str`. You can also use
257 ``bytes(s, encoding=...)`` and ``str(b, encoding=...)``,
258 respectively.
259
260* Like :class:`str`, the :class:`bytes` type is immutable. There is a
261 separate *mutable* type to hold buffered binary data,
262 :class:`bytearray`. Nearly all APIs that accept :class:`bytes` also
263 accept :class:`bytearray`. The mutable API is based on
264 :class:`collections.MutableSequence`.
265
266* All backslashes in raw string literals are interpreted literally.
267 This means that ``'\U'`` and ``'\u'`` escapes in raw strings are not
268 treated specially. For example, ``r'\u20ac'`` is a string of 6
269 characters in Python 3.0, whereas in 2.6, ``ur'\u20ac'`` was the
270 single "euro" character. (Of course, this change only affects raw
271 string literals; the euro character is ``'\u20ac'`` in Python 3.0.)
272
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000273* The built-in :class:`basestring` abstract type was removed. Use
Guido van Rossumfedd1402008-12-03 04:15:35 +0000274 :class:`str` instead. The :class:`str` and :class:`bytes` types
275 don't have functionality enough in common to warrant a shared base
276 class. The ``2to3`` tool (see below) replaces every occurrence of
277 :class:`basestring` with :class:`str`.
278
279* Files opened as text files (still the default mode for :func:`open`)
280 always use an encoding to map between strings (in memory) and bytes
281 (on disk). Binary files (opened with a ``b`` in the mode argument)
282 always use bytes in memory. This means that if a file is opened
283 using an incorrect mode or encoding, I/O will likely fail loudly,
284 instead of silently producing incorrect data. It also means that
285 even Unix users will have to specify the correct mode (text or
286 binary) when opening a file. There is a platform-dependent default
287 encoding, which on Unixy platforms can be set with the ``LANG``
288 environment variable (and sometimes also with some other
289 platform-specific locale-related environment variables). In many
290 cases, but not all, the system default is UTF-8; you should never
291 count on this default. Any application reading or writing more than
292 pure ASCII text should probably have a way to override the encoding.
293 There is no longer any need for using the encoding-aware streams
294 in the :mod:`codecs` module.
295
296* Filenames are passed to and returned from APIs as (Unicode) strings.
297 This can present platform-specific problems because on some
298 platforms filenames are arbitrary byte strings. (On the other hand,
299 on Windows filenames are natively stored as Unicode.) As a
300 work-around, most APIs (e.g. :func:`open` and many functions in the
301 :mod:`os` module) that take filenames accept :class:`bytes` objects
302 as well as strings, and a few APIs have a way to ask for a
303 :class:`bytes` return value. Thus, :func:`os.listdir` returns a
304 list of :class:`bytes` instances if the argument is a :class:`bytes`
Georg Brandl83ebf382008-12-04 18:21:46 +0000305 instance, and :func:`os.getcwdb` returns the current working
Guido van Rossumfedd1402008-12-03 04:15:35 +0000306 directory as a :class:`bytes` instance. Note that when
307 :func:`os.listdir` returns a list of strings, filenames that
308 cannot be decoded properly are omitted rather than raising
309 :exc:`UnicodeError`.
310
311* Some system APIs like :data:`os.environ` and :data:`sys.argv` can
312 also present problems when the bytes made available by the system is
313 not interpretable using the default encoding. Setting the ``LANG``
314 variable and rerunning the program is probably the best approach.
315
316* :pep:`3138`: The :func:`repr` of a string no longer escapes
317 non-ASCII characters. It still escapes control characters and code
318 points with non-printable status in the Unicode standard, however.
319
320* :pep:`3120`: The default source encoding is now UTF-8.
321
322* :pep:`3131`: Non-ASCII letters are now allowed in identifiers.
323 (However, the standard library remains ASCII-only with the exception
324 of contributor names in comments.)
325
326* The :mod:`StringIO` and :mod:`cStringIO` modules are gone. Instead,
327 import the :mod:`io` module and use :class:`io.StringIO` or
328 :class:`io.BytesIO` for text and data respectively.
329
330* See also the :ref:`unicode-howto`, which was updated for Python 3.0.
331
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000332
Guido van Rossum73961352008-12-03 00:54:52 +0000333Overview Of Syntax Changes
334==========================
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000335
Guido van Rossum73961352008-12-03 00:54:52 +0000336This section gives a brief overview of every *syntactic* change in
337Python 3.0.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000338
Guido van Rossum38287682008-12-03 02:03:19 +0000339New Syntax
340----------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000341
Guido van Rossum73961352008-12-03 00:54:52 +0000342* :pep:`3107`: Function argument and return value annotations. This
343 provides a standardized way of annotating a function's parameters
344 and return value. There are no semantics attached to such
345 annotations except that they can be introspected at runtime using
346 the :attr:`__annotations__` attribute. The intent is to encourage
347 experimentation through metaclasses, decorators or frameworks.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000348
Guido van Rossum715287f2008-12-02 22:34:15 +0000349* :pep:`3102`: Keyword-only arguments. Named parameters occurring
350 after ``*args`` in the parameter list *must* be specified using
351 keyword syntax in the call. You can also use a bare ``*`` in the
352 parameter list to indicate that you don't accept a variable-length
353 argument list, but you do have keyword-only arguments.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000354
355* Keyword arguments are allowed after the list of base classes in a
356 class definition. This is used by the new convention for specifying
Guido van Rossumfedd1402008-12-03 04:15:35 +0000357 a metaclass (see next section), but can be used for other purposes
358 as well, as long as the metaclass supports it.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000359
Guido van Rossum715287f2008-12-02 22:34:15 +0000360* :pep:`3104`: :keyword:`nonlocal` statement. Using ``nonlocal x``
361 you can now assign directly to a variable in an outer (but
362 non-global) scope. :keyword:`nonlocal` is a new reserved word.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000363
Guido van Rossum715287f2008-12-02 22:34:15 +0000364* :pep:`3132`: Extended Iterable Unpacking. You can now write things
365 like ``a, b, *rest = some_sequence``. And even ``*rest, a =
366 stuff``. The ``rest`` object is always a (possibly empty) list; the
367 right-hand side may be any iterable. Example::
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000368
Guido van Rossum715287f2008-12-02 22:34:15 +0000369 (a, *rest, b) = range(5)
370
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000371 This sets *a* to ``0``, *b* to ``4``, and *rest* to ``[1, 2, 3]``.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000372
373* Dictionary comprehensions: ``{k: v for k, v in stuff}`` means the
Guido van Rossum73961352008-12-03 00:54:52 +0000374 same thing as ``dict(stuff)`` but is more flexible. (This is
375 :pep:`0274` vindicated. :-)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000376
377* Set literals, e.g. ``{1, 2}``. Note that ``{}`` is an empty
Guido van Rossum715287f2008-12-02 22:34:15 +0000378 dictionary; use ``set()`` for an empty set. Set comprehensions are
Guido van Rossum73961352008-12-03 00:54:52 +0000379 also supported; e.g., ``{x for x in stuff}`` means the same thing as
Guido van Rossum715287f2008-12-02 22:34:15 +0000380 ``set(stuff)`` but is more flexible.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000381
382* New octal literals, e.g. ``0o720`` (already in 2.6). The old octal
Walter Dörwaldeab34c92008-12-02 11:58:09 +0000383 literals (``0720``) are gone.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000384
Georg Brandla2361d92008-12-04 18:19:41 +0000385* New binary literals, e.g. ``0b1010`` (already in 2.6), and
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000386 there is a new corresponding built-in function, :func:`bin`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000387
Raymond Hettingerab4c51c2008-12-03 15:04:01 +0000388* Bytes literals are introduced with a leading ``b`` or ``B``, and
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000389 there is a new corresponding built-in function, :func:`bytes`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000390
Guido van Rossum38287682008-12-03 02:03:19 +0000391Changed Syntax
392--------------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000393
Guido van Rossumfedd1402008-12-03 04:15:35 +0000394* :pep:`3109` and :pep:`3134`: new :keyword:`raise` statement syntax:
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000395 :samp:`raise [{expr} [from {expr}]]`. See below.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000396
Guido van Rossum715287f2008-12-02 22:34:15 +0000397* :keyword:`as` and :keyword:`with` are now reserved words. (Since
398 2.6, actually.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000399
Georg Brandl375aec22011-01-15 17:03:02 +0000400* ``True``, ``False``, and ``None`` are reserved words. (2.6 partially enforced
401 the restrictions on ``None`` already.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000402
Guido van Rossum715287f2008-12-02 22:34:15 +0000403* Change from :keyword:`except` *exc*, *var* to
404 :keyword:`except` *exc* :keyword:`as` *var*. See :pep:`3110`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000405
Guido van Rossumfedd1402008-12-03 04:15:35 +0000406* :pep:`3115`: New Metaclass Syntax. Instead of::
407
408 class C:
409 __metaclass__ = M
410 ...
411
412 you must now use::
413
414 class C(metaclass=M):
415 ...
416
417 The module-global :data:`__metaclass__` variable is no longer
418 supported. (It was a crutch to make it easier to default to
419 new-style classes without deriving every class from
420 :class:`object`.)
421
Guido van Rossum715287f2008-12-02 22:34:15 +0000422* List comprehensions no longer support the syntactic form
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000423 :samp:`[... for {var} in {item1}, {item2}, ...]`. Use
424 :samp:`[... for {var} in ({item1}, {item2}, ...)]` instead.
Guido van Rossum715287f2008-12-02 22:34:15 +0000425 Also note that list comprehensions have different semantics: they
426 are closer to syntactic sugar for a generator expression inside a
427 :func:`list` constructor, and in particular the loop control
428 variables are no longer leaked into the surrounding scope.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000429
Guido van Rossum715287f2008-12-02 22:34:15 +0000430* The *ellipsis* (``...``) can be used as an atomic expression
431 anywhere. (Previously it was only allowed in slices.) Also, it
432 *must* now be spelled as ``...``. (Previously it could also be
433 spelled as ``. . .``, by a mere accident of the grammar.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000434
Guido van Rossum38287682008-12-03 02:03:19 +0000435Removed Syntax
436--------------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000437
Guido van Rossum715287f2008-12-02 22:34:15 +0000438* :pep:`3113`: Tuple parameter unpacking removed. You can no longer
439 write ``def foo(a, (b, c)): ...``.
440 Use ``def foo(a, b_c): b, c = b_c`` instead.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000441
Guido van Rossum715287f2008-12-02 22:34:15 +0000442* Removed backticks (use :func:`repr` instead).
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000443
Guido van Rossum715287f2008-12-02 22:34:15 +0000444* Removed ``<>`` (use ``!=`` instead).
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000445
446* Removed keyword: :func:`exec` is no longer a keyword; it remains as
447 a function. (Fortunately the function syntax was also accepted in
Guido van Rossum715287f2008-12-02 22:34:15 +0000448 2.x.) Also note that :func:`exec` no longer takes a stream argument;
449 instead of ``exec(f)`` you can use ``exec(f.read())``.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000450
451* Integer literals no longer support a trailing ``l`` or ``L``.
452
453* String literals no longer support a leading ``u`` or ``U``.
454
Guido van Rossum715287f2008-12-02 22:34:15 +0000455* The :keyword:`from` *module* :keyword:`import` ``*`` syntax is only
456 allowed at the module level, no longer inside functions.
457
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000458* The only acceptable syntax for relative imports is :samp:`from .[{module}]
459 import {name}`. All :keyword:`import` forms not starting with ``.`` are
Andrew M. Kuchling2982c322008-12-04 15:07:14 +0000460 interpreted as absolute imports. (:pep:`0328`)
Guido van Rossum715287f2008-12-02 22:34:15 +0000461
Guido van Rossumfedd1402008-12-03 04:15:35 +0000462* Classic classes are gone.
463
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000464
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000465Changes Already Present In Python 2.6
466=====================================
467
Guido van Rossum715287f2008-12-02 22:34:15 +0000468Since many users presumably make the jump straight from Python 2.5 to
469Python 3.0, this section reminds the reader of new features that were
470originally designed for Python 3.0 but that were back-ported to Python
4712.6. The corresponding sections in :ref:`whats-new-in-2.6` should be
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000472consulted for longer descriptions.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000473
Guido van Rossum715287f2008-12-02 22:34:15 +0000474* :ref:`pep-0343`. The :keyword:`with` statement is now a standard
Georg Brandlffd1a752008-12-03 06:44:59 +0000475 feature and no longer needs to be imported from the :mod:`__future__`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000476 Also check out :ref:`new-26-context-managers` and
477 :ref:`new-module-contextlib`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000478
Guido van Rossum715287f2008-12-02 22:34:15 +0000479* :ref:`pep-0366`. This enhances the usefulness of the :option:`-m`
480 option when the referenced module lives in a package.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000481
Guido van Rossum715287f2008-12-02 22:34:15 +0000482* :ref:`pep-0370`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000483
Guido van Rossum715287f2008-12-02 22:34:15 +0000484* :ref:`pep-0371`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000485
Guido van Rossum715287f2008-12-02 22:34:15 +0000486* :ref:`pep-3101`. Note: the 2.6 description mentions the
487 :meth:`format` method for both 8-bit and Unicode strings. In 3.0,
488 only the :class:`str` type (text strings with Unicode support)
489 supports this method; the :class:`bytes` type does not. The plan is
490 to eventually make this the only API for string formatting, and to
491 start deprecating the ``%`` operator in Python 3.1.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000492
Guido van Rossum715287f2008-12-02 22:34:15 +0000493* :ref:`pep-3105`. This is now a standard feature and no longer needs
Guido van Rossum67d75ba2008-12-03 02:31:31 +0000494 to be imported from :mod:`__future__`. More details were given above.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000495
Guido van Rossum715287f2008-12-02 22:34:15 +0000496* :ref:`pep-3110`. The :keyword:`except` *exc* :keyword:`as` *var*
497 syntax is now standard and :keyword:`except` *exc*, *var* is no
498 longer supported. (Of course, the :keyword:`as` *var* part is still
499 optional.)
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000500
Guido van Rossum715287f2008-12-02 22:34:15 +0000501* :ref:`pep-3112`. The ``b"..."`` string literal notation (and its
502 variants like ``b'...'``, ``b"""..."""``, and ``br"..."``) now
Guido van Rossum38287682008-12-03 02:03:19 +0000503 produces a literal of type :class:`bytes`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000504
Guido van Rossum715287f2008-12-02 22:34:15 +0000505* :ref:`pep-3116`. The :mod:`io` module is now the standard way of
506 doing file I/O, and the initial values of :data:`sys.stdin`,
507 :data:`sys.stdout` and :data:`sys.stderr` are now instances of
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000508 :class:`io.TextIOBase`. The built-in :func:`open` function is now an
Guido van Rossum715287f2008-12-02 22:34:15 +0000509 alias for :func:`io.open` and has additional keyword arguments
510 *encoding*, *errors*, *newline* and *closefd*. Also note that an
511 invalid *mode* argument now raises :exc:`ValueError`, not
Guido van Rossum38287682008-12-03 02:03:19 +0000512 :exc:`IOError`. The binary file object underlying a text file
513 object can be accessed as :attr:`f.buffer` (but beware that the
514 text object maintains a buffer of itself in order to speed up
515 the encoding and decoding operations).
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000516
Guido van Rossum715287f2008-12-02 22:34:15 +0000517* :ref:`pep-3118`. The old builtin :func:`buffer` is now really gone;
518 the new builtin :func:`memoryview` provides (mostly) similar
519 functionality.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000520
Guido van Rossum715287f2008-12-02 22:34:15 +0000521* :ref:`pep-3119`. The :mod:`abc` module and the ABCs defined in the
Guido van Rossum38287682008-12-03 02:03:19 +0000522 :mod:`collections` module plays a somewhat more prominent role in
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000523 the language now, and built-in collection types like :class:`dict`
Guido van Rossum715287f2008-12-02 22:34:15 +0000524 and :class:`list` conform to the :class:`collections.MutableMapping`
Raymond Hettingerab4c51c2008-12-03 15:04:01 +0000525 and :class:`collections.MutableSequence` ABCs, respectively.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000526
Guido van Rossum715287f2008-12-02 22:34:15 +0000527* :ref:`pep-3127`. As mentioned above, the new octal literal
528 notation is the only one supported, and binary literals have been
529 added.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000530
Guido van Rossum38287682008-12-03 02:03:19 +0000531* :ref:`pep-3129`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000532
Guido van Rossum715287f2008-12-02 22:34:15 +0000533* :ref:`pep-3141`. The :mod:`numbers` module is another new use of
534 ABCs, defining Python's "numeric tower". Also note the new
Guido van Rossum38287682008-12-03 02:03:19 +0000535 :mod:`fractions` module which implements :class:`numbers.Rational`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000536
537
538Library Changes
539===============
540
Guido van Rossumc46ee542008-12-02 23:46:46 +0000541Due to time constraints, this document does not exhaustively cover the
542very extensive changes to the standard library. :pep:`3108` is the
543reference for the major changes to the library. Here's a capsule
544review:
Guido van Rossum56076da2008-12-02 22:58:36 +0000545
Guido van Rossumc46ee542008-12-02 23:46:46 +0000546* Many old modules were removed. Some, like :mod:`gopherlib` (no
547 longer used) and :mod:`md5` (replaced by :mod:`hashlib`), were
548 already deprecated by :pep:`0004`. Others were removed as a result
549 of the removal of support for various platforms such as Irix, BeOS
550 and Mac OS 9 (see :pep:`0011`). Some modules were also selected for
551 removal in Python 3.0 due to lack of use or because a better
552 replacement exists. See :pep:`3108` for an exhaustive list.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000553
Guido van Rossumc46ee542008-12-02 23:46:46 +0000554* The :mod:`bsddb3` package was removed because its presence in the
555 core standard library has proved over time to be a particular burden
Guido van Rossum08388ef2008-12-03 05:39:28 +0000556 for the core developers due to testing instability and Berkeley DB's
Guido van Rossumc46ee542008-12-02 23:46:46 +0000557 release schedule. However, the package is alive and well,
558 externally maintained at http://www.jcea.es/programacion/pybsddb.htm.
559
Andrew M. Kuchling2982c322008-12-04 15:07:14 +0000560* Some modules were renamed because their old name disobeyed
561 :pep:`0008`, or for various other reasons. Here's the list:
Guido van Rossumc46ee542008-12-02 23:46:46 +0000562
563 ======================= =======================
564 Old Name New Name
565 ======================= =======================
566 _winreg winreg
567 ConfigParser configparser
568 copy_reg copyreg
569 Queue queue
570 SocketServer socketserver
571 markupbase _markupbase
572 repr reprlib
573 test.test_support test.support
574 ======================= =======================
575
576* A common pattern in Python 2.x is to have one version of a module
577 implemented in pure Python, with an optional accelerated version
578 implemented as a C extension; for example, :mod:`pickle` and
579 :mod:`cPickle`. This places the burden of importing the accelerated
580 version and falling back on the pure Python version on each user of
581 these modules. In Python 3.0, the accelerated versions are
582 considered implementation details of the pure Python versions.
583 Users should always import the standard version, which attempts to
584 import the accelerated version and falls back to the pure Python
Guido van Rossumfedd1402008-12-03 04:15:35 +0000585 version. The :mod:`pickle` / :mod:`cPickle` pair received this
586 treatment. The :mod:`profile` module is on the list for 3.1. The
587 :mod:`StringIO` module has been turned into a class in the :mod:`io`
588 module.
Guido van Rossumc46ee542008-12-02 23:46:46 +0000589
590* Some related modules have been grouped into packages, and usually
591 the submodule names have been simplified. The resulting new
592 packages are:
593
594 * :mod:`dbm` (:mod:`anydbm`, :mod:`dbhash`, :mod:`dbm`,
595 :mod:`dumbdbm`, :mod:`gdbm`, :mod:`whichdb`).
596
597 * :mod:`html` (:mod:`HTMLParser`, :mod:`htmlentitydefs`).
598
599 * :mod:`http` (:mod:`httplib`, :mod:`BaseHTTPServer`,
600 :mod:`CGIHTTPServer`, :mod:`SimpleHTTPServer`, :mod:`Cookie`,
601 :mod:`cookielib`).
602
603 * :mod:`tkinter` (all :mod:`Tkinter`-related modules except
604 :mod:`turtle`). The target audience of :mod:`turtle` doesn't
605 really care about :mod:`tkinter`. Also note that as of Python
606 2.6, the functionality of :mod:`turtle` has been greatly enhanced.
607
Andrew M. Kuchling2982c322008-12-04 15:07:14 +0000608 * :mod:`urllib` (:mod:`urllib`, :mod:`urllib2`, :mod:`urlparse`,
Guido van Rossumc46ee542008-12-02 23:46:46 +0000609 :mod:`robotparse`).
610
611 * :mod:`xmlrpc` (:mod:`xmlrpclib`, :mod:`DocXMLRPCServer`,
612 :mod:`SimpleXMLRPCServer`).
Christian Heimes6e72b9e2008-12-03 13:39:03 +0000613
Guido van Rossum08388ef2008-12-03 05:39:28 +0000614Some other changes to standard library modules, not covered by
Guido van Rossumfedd1402008-12-03 04:15:35 +0000615:pep:`3108`:
Guido van Rossum715287f2008-12-02 22:34:15 +0000616
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000617* Killed :mod:`sets`. Use the built-in :func:`set` class.
Guido van Rossum715287f2008-12-02 22:34:15 +0000618
Guido van Rossumc46ee542008-12-02 23:46:46 +0000619* Cleanup of the :mod:`sys` module: removed :func:`sys.exitfunc`,
620 :func:`sys.exc_clear`, :data:`sys.exc_type`, :data:`sys.exc_value`,
621 :data:`sys.exc_traceback`. (Note that :data:`sys.last_type`
Guido van Rossum715287f2008-12-02 22:34:15 +0000622 etc. remain.)
623
Guido van Rossumc46ee542008-12-02 23:46:46 +0000624* Cleanup of the :class:`array.array` type: the :meth:`read` and
625 :meth:`write` methods are gone; use :meth:`fromfile` and
Georg Brandld2aa7e62008-12-06 08:12:11 +0000626 :meth:`tofile` instead. Also, the ``'c'`` typecode for array is
627 gone -- use either ``'b'`` for bytes or ``'u'`` for Unicode
628 characters.
Guido van Rossum715287f2008-12-02 22:34:15 +0000629
Guido van Rossumc46ee542008-12-02 23:46:46 +0000630* Cleanup of the :mod:`operator` module: removed
631 :func:`sequenceIncludes` and :func:`isCallable`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000632
Guido van Rossumc46ee542008-12-02 23:46:46 +0000633* Cleanup of the :mod:`thread` module: :func:`acquire_lock` and
634 :func:`release_lock` are gone; use :func:`acquire` and
635 :func:`release` instead.
Guido van Rossum715287f2008-12-02 22:34:15 +0000636
Guido van Rossumc46ee542008-12-02 23:46:46 +0000637* Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API.
Guido van Rossum715287f2008-12-02 22:34:15 +0000638
Guido van Rossumfedd1402008-12-03 04:15:35 +0000639* The :mod:`new` module is gone.
640
641* The functions :func:`os.tmpnam`, :func:`os.tempnam` and
642 :func:`os.tmpfile` have been removed in favor of the :mod:`tempfile`
643 module.
644
645* The :mod:`tokenize` module has been changed to work with bytes. The
646 main entry point is now :func:`tokenize.tokenize`, instead of
647 generate_tokens.
648
649* :data:`string.letters` and its friends (:data:`string.lowercase` and
650 :data:`string.uppercase`) are gone. Use
651 :data:`string.ascii_letters` etc. instead. (The reason for the
Andrew M. Kuchling2982c322008-12-04 15:07:14 +0000652 removal is that :data:`string.letters` and friends had
Guido van Rossumfedd1402008-12-03 04:15:35 +0000653 locale-specific behavior, which is a bad idea for such
654 attractively-named global "constants".)
655
656* Renamed module :mod:`__builtin__` to :mod:`builtins` (removing the
657 underscores, adding an 's'). The :data:`__builtins__` variable
658 found in most global namespaces is unchanged. To modify a builtin,
659 you should use :mod:`builtins`, not :data:`__builtins__`!
660
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000661
Guido van Rossum715287f2008-12-02 22:34:15 +0000662:pep:`3101`: A New Approach To String Formatting
663================================================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000664
Guido van Rossum4a98a2a2008-11-21 18:35:43 +0000665* A new system for built-in string formatting operations replaces the
666 ``%`` string formatting operator. (However, the ``%`` operator is
667 still supported; it will be deprecated in Python 3.1 and removed
Guido van Rossum38287682008-12-03 02:03:19 +0000668 from the language at some later time.) Read :pep:`3101` for the full
669 scoop.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000670
671
Guido van Rossumfedd1402008-12-03 04:15:35 +0000672Changes To Exceptions
673=====================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000674
Guido van Rossumfedd1402008-12-03 04:15:35 +0000675The APIs for raising and catching exception have been cleaned up and
676new powerful features added:
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000677
Guido van Rossum715287f2008-12-02 22:34:15 +0000678* :pep:`0352`: All exceptions must be derived (directly or indirectly)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000679 from :exc:`BaseException`. This is the root of the exception
Guido van Rossumfedd1402008-12-03 04:15:35 +0000680 hierarchy. This is not new as a recommendation, but the
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000681 *requirement* to inherit from :exc:`BaseException` is new. (Python
682 2.6 still allowed classic classes to be raised, and placed no
Guido van Rossumfedd1402008-12-03 04:15:35 +0000683 restriction on what you can catch.) As a consequence, string
684 exceptions are finally truly and utterly dead.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000685
Guido van Rossumfedd1402008-12-03 04:15:35 +0000686* Almost all exceptions should actually derive from :exc:`Exception`;
687 :exc:`BaseException` should only be used as a base class for
688 exceptions that should only be handled at the top level, such as
689 :exc:`SystemExit` or :exc:`KeyboardInterrupt`. The recommended
690 idiom for handling all exceptions except for this latter category is
691 to use :keyword:`except` :exc:`Exception`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000692
Georg Brandl0a7b2c72009-02-06 18:11:01 +0000693* :exc:`StandardError` was removed.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000694
Guido van Rossumfedd1402008-12-03 04:15:35 +0000695* Exceptions no longer behave as sequences. Use the :attr:`args`
696 attribute instead.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000697
Georg Brandl8f9cd6a2008-12-15 09:16:15 +0000698* :pep:`3109`: Raising exceptions. You must now use :samp:`raise
699 {Exception}({args})` instead of :samp:`raise {Exception}, {args}`.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000700 Additionally, you can no longer explicitly specify a traceback;
701 instead, if you *have* to do this, you can assign directly to the
702 :attr:`__traceback__` attribute (see below).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000703
Guido van Rossumfedd1402008-12-03 04:15:35 +0000704* :pep:`3110`: Catching exceptions. You must now use
Georg Brandl8f9cd6a2008-12-15 09:16:15 +0000705 :samp:`except {SomeException} as {variable}` instead
706 of :samp:`except {SomeException}, {variable}`. Moreover, the
Guido van Rossumfedd1402008-12-03 04:15:35 +0000707 *variable* is explicitly deleted when the :keyword:`except` block
708 is left.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000709
Guido van Rossumfedd1402008-12-03 04:15:35 +0000710* :pep:`3134`: Exception chaining. There are two cases: implicit
711 chaining and explicit chaining. Implicit chaining happens when an
712 exception is raised in an :keyword:`except` or :keyword:`finally`
713 handler block. This usually happens due to a bug in the handler
714 block; we call this a *secondary* exception. In this case, the
715 original exception (that was being handled) is saved as the
716 :attr:`__context__` attribute of the secondary exception.
717 Explicit chaining is invoked with this syntax::
718
719 raise SecondaryException() from primary_exception
720
721 (where *primary_exception* is any expression that produces an
722 exception object, probably an exception that was previously caught).
723 In this case, the primary exception is stored on the
724 :attr:`__cause__` attribute of the secondary exception. The
725 traceback printed when an unhandled exception occurs walks the chain
726 of :attr:`__cause__` and :attr:`__context__` attributes and prints a
727 separate traceback for each component of the chain, with the primary
Fred Drake9baee312008-12-04 15:28:51 +0000728 exception at the top. (Java users may recognize this behavior.)
Guido van Rossumfedd1402008-12-03 04:15:35 +0000729
730* :pep:`3134`: Exception objects now store their traceback as the
731 :attr:`__traceback__` attribute. This means that an exception
732 object now contains all the information pertaining to an exception,
733 and there are fewer reasons to use :func:`sys.exc_info` (though the
734 latter is not removed).
735
736* A few exception messages are improved when Windows fails to load an
737 extension module. For example, ``error code 193`` is now ``%1 is
738 not a valid Win32 application``. Strings now deal with non-English
739 locales.
Georg Brandl396ef802008-02-02 10:30:18 +0000740
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000741
Guido van Rossumfedd1402008-12-03 04:15:35 +0000742Miscellaneous Other Changes
743===========================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000744
Guido van Rossumfedd1402008-12-03 04:15:35 +0000745Operators And Special Methods
746-----------------------------
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000747
Georg Brandl396ef802008-02-02 10:30:18 +0000748* ``!=`` now returns the opposite of ``==``, unless ``==`` returns
Guido van Rossumfedd1402008-12-03 04:15:35 +0000749 :data:`NotImplemented`.
Georg Brandl396ef802008-02-02 10:30:18 +0000750
Guido van Rossumfedd1402008-12-03 04:15:35 +0000751* The concept of "unbound methods" has been removed from the language.
Guido van Rossum715287f2008-12-02 22:34:15 +0000752 When referencing a method as a class attribute, you now get a plain
753 function object.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000754
Guido van Rossum715287f2008-12-02 22:34:15 +0000755* :meth:`__getslice__`, :meth:`__setslice__` and :meth:`__delslice__`
756 were killed. The syntax ``a[i:j]`` now translates to
757 ``a.__getitem__(slice(i, j))`` (or :meth:`__setitem__` or
758 :meth:`__delitem__`, when used as an assignment or deletion target,
759 respectively).
Georg Brandl396ef802008-02-02 10:30:18 +0000760
Guido van Rossumfedd1402008-12-03 04:15:35 +0000761* :pep:`3114`: the standard :meth:`next` method has been renamed to
762 :meth:`__next__`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000763
Guido van Rossumfedd1402008-12-03 04:15:35 +0000764* The :meth:`__oct__` and :meth:`__hex__` special methods are removed
765 -- :func:`oct` and :func:`hex` use :meth:`__index__` now to convert
766 the argument to an integer.
767
768* Removed support for :attr:`__members__` and :attr:`__methods__`.
769
770* The function attributes named :attr:`func_X` have been renamed to
771 use the :data:`__X__` form, freeing up these names in the function
772 attribute namespace for user-defined attributes. To wit,
773 :attr:`func_closure`, :attr:`func_code`, :attr:`func_defaults`,
774 :attr:`func_dict`, :attr:`func_doc`, :attr:`func_globals`,
775 :attr:`func_name` were renamed to :attr:`__closure__`,
776 :attr:`__code__`, :attr:`__defaults__`, :attr:`__dict__`,
777 :attr:`__doc__`, :attr:`__globals__`, :attr:`__name__`,
778 respectively.
779
780* :meth:`__nonzero__` is now :meth:`__bool__`.
781
782Builtins
783--------
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000784
Guido van Rossum715287f2008-12-02 22:34:15 +0000785* :pep:`3135`: New :func:`super`. You can now invoke :func:`super`
Guido van Rossumfedd1402008-12-03 04:15:35 +0000786 without arguments and (assuming this is in a regular instance method
787 defined inside a :keyword:`class` statement) the right class and
788 instance will automatically be chosen. With arguments, the behavior
789 of :func:`super` is unchanged.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000790
Guido van Rossumfedd1402008-12-03 04:15:35 +0000791* :pep:`3111`: :func:`raw_input` was renamed to :func:`input`. That
792 is, the new :func:`input` function reads a line from
793 :data:`sys.stdin` and returns it with the trailing newline stripped.
794 It raises :exc:`EOFError` if the input is terminated prematurely.
795 To get the old behavior of :func:`input`, use ``eval(input())``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000796
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000797* A new built-in function :func:`next` was added to call the
798 :meth:`__next__` method on an object.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000799
Mark Dickinsonf4112e22010-06-17 18:24:52 +0000800* The :func:`round` function rounding strategy and return type have
801 changed. Exact halfway cases are now rounded to the nearest even
802 result instead of away from zero. (For example, ``round(2.5)`` now
803 returns ``2`` rather than ``3``.) :func:`round(x[, n])` now
804 delegates to ``x.__round__([n])`` instead of always returning a
805 float. It generally returns an integer when called with a single
806 argument and a value of the same type as ``x`` when called with two
807 arguments.
808
Guido van Rossumfedd1402008-12-03 04:15:35 +0000809* Moved :func:`intern` to :func:`sys.intern`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000810
Guido van Rossum715287f2008-12-02 22:34:15 +0000811* Removed: :func:`apply`. Instead of ``apply(f, args)`` use
812 ``f(*args)``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000813
Guido van Rossum715287f2008-12-02 22:34:15 +0000814* Removed :func:`callable`. Instead of ``callable(f)`` you can use
Benjamin Peterson36e0d0e2009-10-03 15:13:15 +0000815 ``isinstance(f, collections.Callable)``. The :func:`operator.isCallable`
816 function is also gone.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000817
Guido van Rossum715287f2008-12-02 22:34:15 +0000818* Removed :func:`coerce`. This function no longer serves a purpose
819 now that classic classes are gone.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000820
Guido van Rossum715287f2008-12-02 22:34:15 +0000821* Removed :func:`execfile`. Instead of ``execfile(fn)`` use
822 ``exec(open(fn).read())``.
Georg Brandl396ef802008-02-02 10:30:18 +0000823
Benjamin Peterson30364202009-03-23 02:49:51 +0000824* Removed the :class:`file` type. Use :func:`open`. There are now several
825 different kinds of streams that open can return in the :mod:`io` module.
Georg Brandl396ef802008-02-02 10:30:18 +0000826
Guido van Rossum715287f2008-12-02 22:34:15 +0000827* Removed :func:`reduce`. Use :func:`functools.reduce` if you really
828 need it; however, 99 percent of the time an explicit :keyword:`for`
829 loop is more readable.
Georg Brandl396ef802008-02-02 10:30:18 +0000830
Georg Brandl48310cd2009-01-03 21:18:54 +0000831* Removed :func:`reload`. Use :func:`imp.reload`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000832
833* Removed. :meth:`dict.has_key` -- use the :keyword:`in` operator
834 instead.
835
Guido van Rossumfedd1402008-12-03 04:15:35 +0000836.. ======================================================================
Guido van Rossum715287f2008-12-02 22:34:15 +0000837
Guido van Rossumfedd1402008-12-03 04:15:35 +0000838
839Build and C API Changes
840=======================
841
842Due to time constraints, here is a *very* incomplete list of changes
843to the C API.
844
845* Support for several platforms was dropped, including but not limited
846 to Mac OS 9, BeOS, RISCOS, Irix, and Tru64.
847
848* :pep:`3118`: New Buffer API.
849
850* :pep:`3121`: Extension Module Initialization & Finalization.
851
Georg Brandl60203b42010-10-06 10:11:56 +0000852* :pep:`3123`: Making :c:macro:`PyObject_HEAD` conform to standard C.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000853
854* No more C API support for restricted execution.
855
Georg Brandl60203b42010-10-06 10:11:56 +0000856* :c:func:`PyNumber_Coerce`, :c:func:`PyNumber_CoerceEx`,
857 :c:func:`PyMember_Get`, and :c:func:`PyMember_Set` C APIs are removed.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000858
Georg Brandl60203b42010-10-06 10:11:56 +0000859* New C API :c:func:`PyImport_ImportModuleNoBlock`, works like
860 :c:func:`PyImport_ImportModule` but won't block on the import lock
Guido van Rossumfedd1402008-12-03 04:15:35 +0000861 (returning an error instead).
Guido van Rossum715287f2008-12-02 22:34:15 +0000862
863* Renamed the boolean conversion C-level slot and method:
Guido van Rossumfedd1402008-12-03 04:15:35 +0000864 ``nb_nonzero`` is now ``nb_bool``.
Guido van Rossum715287f2008-12-02 22:34:15 +0000865
Georg Brandl60203b42010-10-06 10:11:56 +0000866* Removed :c:macro:`METH_OLDARGS` and :c:macro:`WITH_CYCLE_GC` from the C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000867
Georg Brandl5a165582007-08-31 06:15:01 +0000868.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000869
870
Guido van Rossumfedd1402008-12-03 04:15:35 +0000871Performance
872===========
Georg Brandl116aa622007-08-15 14:28:22 +0000873
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000874The net result of the 3.0 generalizations is that Python 3.0 runs the
Guido van Rossum715287f2008-12-02 22:34:15 +0000875pystone benchmark around 10% slower than Python 2.5. Most likely the
876biggest cause is the removal of special-casing for small integers.
877There's room for improvement, but it will happen after 3.0 is
878released!
Georg Brandl116aa622007-08-15 14:28:22 +0000879
Georg Brandl5a165582007-08-31 06:15:01 +0000880.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000881
882
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000883Porting To Python 3.0
Georg Brandl116aa622007-08-15 14:28:22 +0000884=====================
885
Guido van Rossum56076da2008-12-02 22:58:36 +0000886For porting existing Python 2.5 or 2.6 source code to Python 3.0, the
887best strategy is the following:
Georg Brandl116aa622007-08-15 14:28:22 +0000888
Guido van Rossum56076da2008-12-02 22:58:36 +00008890. (Prerequisite:) Start with excellent test coverage.
Georg Brandl116aa622007-08-15 14:28:22 +0000890
Guido van Rossum56076da2008-12-02 22:58:36 +00008911. Port to Python 2.6. This should be no more work than the average
892 port from Python 2.x to Python 2.(x+1). Make sure all your tests
893 pass.
Christian Heimesf78b1c62007-12-02 16:52:32 +0000894
Guido van Rossum56076da2008-12-02 22:58:36 +00008952. (Still using 2.6:) Turn on the :option:`-3` command line switch.
896 This enables warnings about features that will be removed (or
897 change) in 3.0. Run your test suite again, and fix code that you
898 get warnings about until there are no warnings left, and all your
899 tests still pass.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000900
Guido van Rossum56076da2008-12-02 22:58:36 +00009013. Run the ``2to3`` source-to-source translator over your source code
902 tree. (See :ref:`2to3-reference` for more on this tool.) Run the
903 result of the translation under Python 3.0. Manually fix up any
904 remaining issues, fixing problems until all tests pass again.
905
906It is not recommended to try to write source code that runs unchanged
907under both Python 2.6 and 3.0; you'd have to use a very contorted
Georg Brandl375aec22011-01-15 17:03:02 +0000908coding style, e.g. avoiding ``print`` statements, metaclasses,
Guido van Rossum56076da2008-12-02 22:58:36 +0000909and much more. If you are maintaining a library that needs to support
910both Python 2.6 and Python 3.0, the best approach is to modify step 3
911above by editing the 2.6 version of the source code and running the
912``2to3`` translator again, rather than editing the 3.0 version of the
913source code.
914
915For porting C extensions to Python 3.0, please see :ref:`cporting-howto`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000916
Georg Brandl5a165582007-08-31 06:15:01 +0000917.. ======================================================================