blob: 5ecf2ebfe79c4b64b3614aa4788477eb50e775a7 [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
Guido van Rossum4a98a2a2008-11-21 18:35:43 +00008
9.. $Id$
10 Rules for maintenance:
Georg Brandl48310cd2009-01-03 21:18:54 +000011
Georg Brandl5a165582007-08-31 06:15:01 +000012 * Anyone can add text to this document. Do not spend very much time
13 on the wording of your changes, because your text will probably
14 get rewritten to some degree.
Georg Brandl48310cd2009-01-03 21:18:54 +000015
Georg Brandl5a165582007-08-31 06:15:01 +000016 * The maintainer will go through Misc/NEWS periodically and add
17 changes; it's therefore more important to add your changes to
Guido van Rossum67d75ba2008-12-03 02:31:31 +000018 Misc/NEWS than to this file. (Note: I didn't get to this for 3.0.
19 GvR.)
Georg Brandl48310cd2009-01-03 21:18:54 +000020
Georg Brandl5a165582007-08-31 06:15:01 +000021 * This is not a complete list of every single change; completeness
22 is the purpose of Misc/NEWS. Some changes I consider too small
23 or esoteric to include. If such a change is added to the text,
24 I'll just remove it. (This is another reason you shouldn't spend
25 too much time on writing your addition.)
Georg Brandl48310cd2009-01-03 21:18:54 +000026
Georg Brandl5a165582007-08-31 06:15:01 +000027 * If you want to draw your new text to the attention of the
28 maintainer, add 'XXX' to the beginning of the paragraph or
29 section.
Georg Brandl48310cd2009-01-03 21:18:54 +000030
Georg Brandl5a165582007-08-31 06:15:01 +000031 * It's OK to just add a fragmentary note about a change. For
32 example: "XXX Describe the transmogrify() function added to the
33 socket module." The maintainer will research the change and
34 write the necessary text.
Georg Brandl48310cd2009-01-03 21:18:54 +000035
Georg Brandl5a165582007-08-31 06:15:01 +000036 * You can comment out your additions if you like, but it's not
37 necessary (especially when a final release is some months away).
Georg Brandl48310cd2009-01-03 21:18:54 +000038
Georg Brandl5a165582007-08-31 06:15:01 +000039 * Credit the author of a patch or bugfix. Just the name is
Guido van Rossum67d75ba2008-12-03 02:31:31 +000040 sufficient; the e-mail address isn't necessary. (Due to time
41 constraints I haven't managed to do this for 3.0. GvR.)
Georg Brandl48310cd2009-01-03 21:18:54 +000042
Georg Brandl5a165582007-08-31 06:15:01 +000043 * It's helpful to add the bug/patch number as a comment:
Georg Brandl48310cd2009-01-03 21:18:54 +000044
Georg Brandl5a165582007-08-31 06:15:01 +000045 % Patch 12345
46 XXX Describe the transmogrify() function added to the socket
47 module.
48 (Contributed by P.Y. Developer.)
Georg Brandl48310cd2009-01-03 21:18:54 +000049
Georg Brandl5a165582007-08-31 06:15:01 +000050 This saves the maintainer the effort of going through the SVN log
Guido van Rossum67d75ba2008-12-03 02:31:31 +000051 when researching a change. (Again, I didn't get to this for 3.0.
52 GvR.)
Georg Brandl116aa622007-08-15 14:28:22 +000053
Guido van Rossumeb3d8d42008-12-02 00:56:25 +000054This article explains the new features in Python 3.0, compared to 2.6.
Guido van Rossumc46ee542008-12-02 23:46:46 +000055Python 3.0, also known as "Python 3000" or "Py3K", is the first ever
Guido van Rossum08388ef2008-12-03 05:39:28 +000056*intentionally backwards incompatible* Python release. There are more
57changes than in a typical release, and more that are important for all
58Python users. Nevertheless, after digesting the changes, you'll find
59that Python really hasn't changed all that much -- by and large, we're
60mostly fixing well-known annoyances and warts, and removing a lot of
61old cruft.
Guido van Rossumb197f3c2007-08-31 00:37:00 +000062
63This article doesn't attempt to provide a complete specification of
Guido van Rossum08388ef2008-12-03 05:39:28 +000064all new features, but instead tries to give a convenient overview.
65For full details, you should refer to the documentation for Python
663.0, and/or the many PEPs referenced in the text. If you want to
67understand the complete implementation and design rationale for a
68particular feature, PEPs usually have more details than the regular
69documentation; but note that PEPs usually are not kept up-to-date once
70a feature has been fully implemented.
71
72Due to time constraints this document is not as complete as it should
73have been. As always for a new release, the ``Misc/NEWS`` file in the
74source distribution contains a wealth of detailed information about
75every small thing that was changed.
Georg Brandl116aa622007-08-15 14:28:22 +000076
Georg Brandl5a165582007-08-31 06:15:01 +000077.. Compare with previous release in 2 - 3 sentences here.
78.. add hyperlink when the documentation becomes available online.
Georg Brandl116aa622007-08-15 14:28:22 +000079
Georg Brandl5a165582007-08-31 06:15:01 +000080.. ======================================================================
81.. Large, PEP-level features and changes should be described here.
82.. Should there be a new section here for 3k migration?
83.. Or perhaps a more general section describing module changes/deprecation?
84.. sets module deprecated
85.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +000086
87
Guido van Rossumb197f3c2007-08-31 00:37:00 +000088Common Stumbling Blocks
89=======================
90
Guido van Rossum715287f2008-12-02 22:34:15 +000091This section lists those few changes that are most likely to trip you
92up if you're used to Python 2.5.
Guido van Rossumb197f3c2007-08-31 00:37:00 +000093
Guido van Rossumeb3d8d42008-12-02 00:56:25 +000094Print Is A Function
95-------------------
Guido van Rossumdff1c312007-09-06 14:46:41 +000096
Georg Brandl375aec22011-01-15 17:03:02 +000097The ``print`` statement has been replaced with a :func:`print`
Guido van Rossum715287f2008-12-02 22:34:15 +000098function, with keyword arguments to replace most of the special syntax
Georg Brandl375aec22011-01-15 17:03:02 +000099of the old ``print`` statement (:pep:`3105`). Examples::
Guido van Rossumdff1c312007-09-06 14:46:41 +0000100
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000101 Old: print "The answer is", 2*2
102 New: print("The answer is", 2*2)
Guido van Rossumdff1c312007-09-06 14:46:41 +0000103
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000104 Old: print x, # Trailing comma suppresses newline
105 New: print(x, end=" ") # Appends a space instead of a newline
Guido van Rossumdff1c312007-09-06 14:46:41 +0000106
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000107 Old: print # Prints a newline
108 New: print() # You must call the function!
Guido van Rossumdff1c312007-09-06 14:46:41 +0000109
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000110 Old: print >>sys.stderr, "fatal error"
111 New: print("fatal error", file=sys.stderr)
Guido van Rossumdff1c312007-09-06 14:46:41 +0000112
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000113 Old: print (x, y) # prints repr((x, y))
114 New: print((x, y)) # Not the same as print(x, y)!
Guido van Rossumdff1c312007-09-06 14:46:41 +0000115
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000116You can also customize the separator between items, e.g.::
Guido van Rossumdff1c312007-09-06 14:46:41 +0000117
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000118 print("There are <", 2**32, "> possibilities!", sep="")
Guido van Rossumdff1c312007-09-06 14:46:41 +0000119
Martin Panter1050d2d2016-07-26 11:18:21 +0200120which produces:
121
122.. code-block:: none
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
Jason R. Coombsdf9a5f52011-08-01 17:51:34 -0400157 a list and the input sequences are all of equal length, a quick
158 fix is to wrap :func:`map` in :func:`list`, e.g. ``list(map(...))``,
159 but a better fix is
Guido van Rossum08388ef2008-12-03 05:39:28 +0000160 often to use a list comprehension (especially when the original code
161 uses :keyword:`lambda`), or rewriting the code so it doesn't need a
162 list at all. Particularly tricky is :func:`map` invoked for the
163 side effects of the function; the correct transformation is to use a
164 regular :keyword:`for` loop (since creating a list would just be
165 wasteful).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000166
Jason R. Coombsdf9a5f52011-08-01 17:51:34 -0400167 If the input sequences are not of equal length, :func:`map` will
168 stop at the termination of the shortest of the sequences. For full
Georg Brandl93a56cd2014-10-30 22:25:41 +0100169 compatibility with :func:`map` from Python 2.x, also wrap the sequences in
Jason R. Coombsdf9a5f52011-08-01 17:51:34 -0400170 :func:`itertools.zip_longest`, e.g. ``map(func, *sequences)`` becomes
171 ``list(map(func, itertools.zip_longest(*sequences)))``.
172
Guido van Rossum73961352008-12-03 00:54:52 +0000173* :func:`range` now behaves like :func:`xrange` used to behave, except
174 it works with values of arbitrary size. The latter no longer
175 exists.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000176
177* :func:`zip` now returns an iterator.
178
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000179Ordering Comparisons
180--------------------
181
182Python 3.0 has simplified the rules for ordering comparisons:
183
184* The ordering comparison operators (``<``, ``<=``, ``>=``, ``>``)
185 raise a TypeError exception when the operands don't have a
186 meaningful natural ordering. Thus, expressions like ``1 < ''``, ``0
Guido van Rossum08388ef2008-12-03 05:39:28 +0000187 > None`` or ``len <= len`` are no longer valid, and e.g. ``None <
188 None`` raises :exc:`TypeError` instead of returning
Georg Brandl375aec22011-01-15 17:03:02 +0000189 ``False``. A corollary is that sorting a heterogeneous list
Guido van Rossum08388ef2008-12-03 05:39:28 +0000190 no longer makes sense -- all the elements must be comparable to each
191 other. Note that this does not apply to the ``==`` and ``!=``
192 operators: objects of different incomparable types always compare
Guido van Rossum815427c2008-12-03 15:24:50 +0000193 unequal to each other.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000194
Guido van Rossumfedd1402008-12-03 04:15:35 +0000195* :meth:`builtin.sorted` and :meth:`list.sort` no longer accept the
196 *cmp* argument providing a comparison function. Use the *key*
197 argument instead. N.B. the *key* and *reverse* arguments are now
198 "keyword-only".
Kurt B. Kaisera1401012008-02-13 16:09:27 +0000199
Georg Brandl40c509d2008-12-06 08:14:46 +0000200* The :func:`cmp` function should be treated as gone, and the :meth:`__cmp__`
201 special method is no longer supported. Use :meth:`__lt__` for sorting,
202 :meth:`__eq__` with :meth:`__hash__`, and other rich comparisons as needed.
203 (If you really need the :func:`cmp` functionality, you could use the
204 expression ``(a > b) - (a < b)`` as the equivalent for ``cmp(a, b)``.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000205
206Integers
207--------
208
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300209* :pep:`237`: Essentially, :class:`long` renamed to :class:`int`.
Guido van Rossum73961352008-12-03 00:54:52 +0000210 That is, there is only one built-in integral type, named
211 :class:`int`; but it behaves mostly like the old :class:`long` type.
Guido van Rossum4a98a2a2008-11-21 18:35:43 +0000212
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300213* :pep:`238`: An expression like ``1/2`` returns a float. Use
Guido van Rossum73961352008-12-03 00:54:52 +0000214 ``1//2`` to get the truncating behavior. (The latter syntax has
215 existed for years, at least since Python 2.2.)
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000216
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000217* The :data:`sys.maxint` constant was removed, since there is no
Guido van Rossum08388ef2008-12-03 05:39:28 +0000218 longer a limit to the value of integers. However, :data:`sys.maxsize`
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000219 can be used as an integer larger than any practical list or string
220 index. It conforms to the implementation's "natural" integer size
221 and is typically the same as :data:`sys.maxint` in previous releases
222 on the same platform (assuming the same build options).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000223
Guido van Rossum73961352008-12-03 00:54:52 +0000224* The :func:`repr` of a long integer doesn't include the trailing ``L``
225 anymore, so code that unconditionally strips that character will
226 chop off the last digit instead. (Use :func:`str` instead.)
227
228* Octal literals are no longer of the form ``0720``; use ``0o720``
229 instead.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000230
Guido van Rossumfedd1402008-12-03 04:15:35 +0000231Text Vs. Data Instead Of Unicode Vs. 8-bit
232------------------------------------------
233
234Everything you thought you knew about binary data and Unicode has
235changed.
236
237* Python 3.0 uses the concepts of *text* and (binary) *data* instead
238 of Unicode strings and 8-bit strings. All text is Unicode; however
239 *encoded* Unicode is represented as binary data. The type used to
240 hold text is :class:`str`, the type used to hold data is
241 :class:`bytes`. The biggest difference with the 2.x situation is
242 that any attempt to mix text and data in Python 3.0 raises
Guido van Rossumb768d4f2008-12-03 04:18:17 +0000243 :exc:`TypeError`, whereas if you were to mix Unicode and 8-bit
Guido van Rossumfedd1402008-12-03 04:15:35 +0000244 strings in Python 2.x, it would work if the 8-bit string happened to
245 contain only 7-bit (ASCII) bytes, but you would get
Guido van Rossumb768d4f2008-12-03 04:18:17 +0000246 :exc:`UnicodeDecodeError` if it contained non-ASCII values. This
Guido van Rossumfedd1402008-12-03 04:15:35 +0000247 value-specific behavior has caused numerous sad faces over the
248 years.
249
250* As a consequence of this change in philosophy, pretty much all code
251 that uses Unicode, encodings or binary data most likely has to
252 change. The change is for the better, as in the 2.x world there
253 were numerous bugs having to do with mixing encoded and unencoded
254 text. To be prepared in Python 2.x, start using :class:`unicode`
255 for all unencoded text, and :class:`str` for binary or encoded data
256 only. Then the ``2to3`` tool will do most of the work for you.
257
258* You can no longer use ``u"..."`` literals for Unicode text.
259 However, you must use ``b"..."`` literals for binary data.
260
261* As the :class:`str` and :class:`bytes` types cannot be mixed, you
262 must always explicitly convert between them. Use :meth:`str.encode`
263 to go from :class:`str` to :class:`bytes`, and :meth:`bytes.decode`
264 to go from :class:`bytes` to :class:`str`. You can also use
265 ``bytes(s, encoding=...)`` and ``str(b, encoding=...)``,
266 respectively.
267
268* Like :class:`str`, the :class:`bytes` type is immutable. There is a
269 separate *mutable* type to hold buffered binary data,
270 :class:`bytearray`. Nearly all APIs that accept :class:`bytes` also
271 accept :class:`bytearray`. The mutable API is based on
272 :class:`collections.MutableSequence`.
273
274* All backslashes in raw string literals are interpreted literally.
275 This means that ``'\U'`` and ``'\u'`` escapes in raw strings are not
276 treated specially. For example, ``r'\u20ac'`` is a string of 6
277 characters in Python 3.0, whereas in 2.6, ``ur'\u20ac'`` was the
278 single "euro" character. (Of course, this change only affects raw
279 string literals; the euro character is ``'\u20ac'`` in Python 3.0.)
280
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000281* The built-in :class:`basestring` abstract type was removed. Use
Guido van Rossumfedd1402008-12-03 04:15:35 +0000282 :class:`str` instead. The :class:`str` and :class:`bytes` types
283 don't have functionality enough in common to warrant a shared base
284 class. The ``2to3`` tool (see below) replaces every occurrence of
285 :class:`basestring` with :class:`str`.
286
287* Files opened as text files (still the default mode for :func:`open`)
288 always use an encoding to map between strings (in memory) and bytes
289 (on disk). Binary files (opened with a ``b`` in the mode argument)
290 always use bytes in memory. This means that if a file is opened
291 using an incorrect mode or encoding, I/O will likely fail loudly,
292 instead of silently producing incorrect data. It also means that
293 even Unix users will have to specify the correct mode (text or
294 binary) when opening a file. There is a platform-dependent default
295 encoding, which on Unixy platforms can be set with the ``LANG``
296 environment variable (and sometimes also with some other
297 platform-specific locale-related environment variables). In many
298 cases, but not all, the system default is UTF-8; you should never
299 count on this default. Any application reading or writing more than
300 pure ASCII text should probably have a way to override the encoding.
301 There is no longer any need for using the encoding-aware streams
302 in the :mod:`codecs` module.
303
Antoine Pitrou08c08eb2011-12-21 11:24:15 +0100304* The initial values of :data:`sys.stdin`, :data:`sys.stdout` and
305 :data:`sys.stderr` are now unicode-only text files (i.e., they are
306 instances of :class:`io.TextIOBase`). To read and write bytes data
307 with these streams, you need to use their :data:`io.TextIOBase.buffer`
308 attribute.
309
Guido van Rossumfedd1402008-12-03 04:15:35 +0000310* Filenames are passed to and returned from APIs as (Unicode) strings.
311 This can present platform-specific problems because on some
312 platforms filenames are arbitrary byte strings. (On the other hand,
313 on Windows filenames are natively stored as Unicode.) As a
314 work-around, most APIs (e.g. :func:`open` and many functions in the
315 :mod:`os` module) that take filenames accept :class:`bytes` objects
316 as well as strings, and a few APIs have a way to ask for a
317 :class:`bytes` return value. Thus, :func:`os.listdir` returns a
318 list of :class:`bytes` instances if the argument is a :class:`bytes`
Georg Brandl83ebf382008-12-04 18:21:46 +0000319 instance, and :func:`os.getcwdb` returns the current working
Guido van Rossumfedd1402008-12-03 04:15:35 +0000320 directory as a :class:`bytes` instance. Note that when
321 :func:`os.listdir` returns a list of strings, filenames that
322 cannot be decoded properly are omitted rather than raising
323 :exc:`UnicodeError`.
324
325* Some system APIs like :data:`os.environ` and :data:`sys.argv` can
326 also present problems when the bytes made available by the system is
327 not interpretable using the default encoding. Setting the ``LANG``
328 variable and rerunning the program is probably the best approach.
329
330* :pep:`3138`: The :func:`repr` of a string no longer escapes
331 non-ASCII characters. It still escapes control characters and code
332 points with non-printable status in the Unicode standard, however.
333
334* :pep:`3120`: The default source encoding is now UTF-8.
335
336* :pep:`3131`: Non-ASCII letters are now allowed in identifiers.
337 (However, the standard library remains ASCII-only with the exception
338 of contributor names in comments.)
339
340* The :mod:`StringIO` and :mod:`cStringIO` modules are gone. Instead,
341 import the :mod:`io` module and use :class:`io.StringIO` or
342 :class:`io.BytesIO` for text and data respectively.
343
344* See also the :ref:`unicode-howto`, which was updated for Python 3.0.
345
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000346
Guido van Rossum73961352008-12-03 00:54:52 +0000347Overview Of Syntax Changes
348==========================
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000349
Guido van Rossum73961352008-12-03 00:54:52 +0000350This section gives a brief overview of every *syntactic* change in
351Python 3.0.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000352
Guido van Rossum38287682008-12-03 02:03:19 +0000353New Syntax
354----------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000355
Guido van Rossum73961352008-12-03 00:54:52 +0000356* :pep:`3107`: Function argument and return value annotations. This
357 provides a standardized way of annotating a function's parameters
358 and return value. There are no semantics attached to such
359 annotations except that they can be introspected at runtime using
360 the :attr:`__annotations__` attribute. The intent is to encourage
361 experimentation through metaclasses, decorators or frameworks.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000362
Guido van Rossum715287f2008-12-02 22:34:15 +0000363* :pep:`3102`: Keyword-only arguments. Named parameters occurring
364 after ``*args`` in the parameter list *must* be specified using
365 keyword syntax in the call. You can also use a bare ``*`` in the
366 parameter list to indicate that you don't accept a variable-length
367 argument list, but you do have keyword-only arguments.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000368
369* Keyword arguments are allowed after the list of base classes in a
370 class definition. This is used by the new convention for specifying
Guido van Rossumfedd1402008-12-03 04:15:35 +0000371 a metaclass (see next section), but can be used for other purposes
372 as well, as long as the metaclass supports it.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000373
Guido van Rossum715287f2008-12-02 22:34:15 +0000374* :pep:`3104`: :keyword:`nonlocal` statement. Using ``nonlocal x``
375 you can now assign directly to a variable in an outer (but
376 non-global) scope. :keyword:`nonlocal` is a new reserved word.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000377
Guido van Rossum715287f2008-12-02 22:34:15 +0000378* :pep:`3132`: Extended Iterable Unpacking. You can now write things
379 like ``a, b, *rest = some_sequence``. And even ``*rest, a =
380 stuff``. The ``rest`` object is always a (possibly empty) list; the
381 right-hand side may be any iterable. Example::
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000382
Guido van Rossum715287f2008-12-02 22:34:15 +0000383 (a, *rest, b) = range(5)
384
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000385 This sets *a* to ``0``, *b* to ``4``, and *rest* to ``[1, 2, 3]``.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000386
387* Dictionary comprehensions: ``{k: v for k, v in stuff}`` means the
Guido van Rossum73961352008-12-03 00:54:52 +0000388 same thing as ``dict(stuff)`` but is more flexible. (This is
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300389 :pep:`274` vindicated. :-)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000390
391* Set literals, e.g. ``{1, 2}``. Note that ``{}`` is an empty
Guido van Rossum715287f2008-12-02 22:34:15 +0000392 dictionary; use ``set()`` for an empty set. Set comprehensions are
Guido van Rossum73961352008-12-03 00:54:52 +0000393 also supported; e.g., ``{x for x in stuff}`` means the same thing as
Guido van Rossum715287f2008-12-02 22:34:15 +0000394 ``set(stuff)`` but is more flexible.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000395
396* New octal literals, e.g. ``0o720`` (already in 2.6). The old octal
Walter Dörwaldeab34c92008-12-02 11:58:09 +0000397 literals (``0720``) are gone.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000398
Georg Brandla2361d92008-12-04 18:19:41 +0000399* New binary literals, e.g. ``0b1010`` (already in 2.6), and
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000400 there is a new corresponding built-in function, :func:`bin`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000401
Raymond Hettingerab4c51c2008-12-03 15:04:01 +0000402* Bytes literals are introduced with a leading ``b`` or ``B``, and
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000403 there is a new corresponding built-in function, :func:`bytes`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000404
Guido van Rossum38287682008-12-03 02:03:19 +0000405Changed Syntax
406--------------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000407
Guido van Rossumfedd1402008-12-03 04:15:35 +0000408* :pep:`3109` and :pep:`3134`: new :keyword:`raise` statement syntax:
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000409 :samp:`raise [{expr} [from {expr}]]`. See below.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000410
Guido van Rossum715287f2008-12-02 22:34:15 +0000411* :keyword:`as` and :keyword:`with` are now reserved words. (Since
412 2.6, actually.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000413
Georg Brandl375aec22011-01-15 17:03:02 +0000414* ``True``, ``False``, and ``None`` are reserved words. (2.6 partially enforced
415 the restrictions on ``None`` already.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000416
Guido van Rossum715287f2008-12-02 22:34:15 +0000417* Change from :keyword:`except` *exc*, *var* to
418 :keyword:`except` *exc* :keyword:`as` *var*. See :pep:`3110`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000419
Guido van Rossumfedd1402008-12-03 04:15:35 +0000420* :pep:`3115`: New Metaclass Syntax. Instead of::
421
422 class C:
423 __metaclass__ = M
424 ...
425
426 you must now use::
427
428 class C(metaclass=M):
429 ...
430
431 The module-global :data:`__metaclass__` variable is no longer
432 supported. (It was a crutch to make it easier to default to
433 new-style classes without deriving every class from
434 :class:`object`.)
435
Guido van Rossum715287f2008-12-02 22:34:15 +0000436* List comprehensions no longer support the syntactic form
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000437 :samp:`[... for {var} in {item1}, {item2}, ...]`. Use
438 :samp:`[... for {var} in ({item1}, {item2}, ...)]` instead.
Guido van Rossum715287f2008-12-02 22:34:15 +0000439 Also note that list comprehensions have different semantics: they
440 are closer to syntactic sugar for a generator expression inside a
441 :func:`list` constructor, and in particular the loop control
442 variables are no longer leaked into the surrounding scope.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000443
Guido van Rossum715287f2008-12-02 22:34:15 +0000444* The *ellipsis* (``...``) can be used as an atomic expression
445 anywhere. (Previously it was only allowed in slices.) Also, it
446 *must* now be spelled as ``...``. (Previously it could also be
447 spelled as ``. . .``, by a mere accident of the grammar.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000448
Guido van Rossum38287682008-12-03 02:03:19 +0000449Removed Syntax
450--------------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000451
Guido van Rossum715287f2008-12-02 22:34:15 +0000452* :pep:`3113`: Tuple parameter unpacking removed. You can no longer
453 write ``def foo(a, (b, c)): ...``.
454 Use ``def foo(a, b_c): b, c = b_c`` instead.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000455
Guido van Rossum715287f2008-12-02 22:34:15 +0000456* Removed backticks (use :func:`repr` instead).
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000457
Guido van Rossum715287f2008-12-02 22:34:15 +0000458* Removed ``<>`` (use ``!=`` instead).
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000459
460* Removed keyword: :func:`exec` is no longer a keyword; it remains as
461 a function. (Fortunately the function syntax was also accepted in
Guido van Rossum715287f2008-12-02 22:34:15 +0000462 2.x.) Also note that :func:`exec` no longer takes a stream argument;
463 instead of ``exec(f)`` you can use ``exec(f.read())``.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000464
465* Integer literals no longer support a trailing ``l`` or ``L``.
466
467* String literals no longer support a leading ``u`` or ``U``.
468
Guido van Rossum715287f2008-12-02 22:34:15 +0000469* The :keyword:`from` *module* :keyword:`import` ``*`` syntax is only
470 allowed at the module level, no longer inside functions.
471
Georg Brandlbadc7ab2008-12-05 18:31:51 +0000472* The only acceptable syntax for relative imports is :samp:`from .[{module}]
473 import {name}`. All :keyword:`import` forms not starting with ``.`` are
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300474 interpreted as absolute imports. (:pep:`328`)
Guido van Rossum715287f2008-12-02 22:34:15 +0000475
Guido van Rossumfedd1402008-12-03 04:15:35 +0000476* Classic classes are gone.
477
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000478
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000479Changes Already Present In Python 2.6
480=====================================
481
Guido van Rossum715287f2008-12-02 22:34:15 +0000482Since many users presumably make the jump straight from Python 2.5 to
483Python 3.0, this section reminds the reader of new features that were
484originally designed for Python 3.0 but that were back-ported to Python
4852.6. The corresponding sections in :ref:`whats-new-in-2.6` should be
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000486consulted for longer descriptions.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000487
Guido van Rossum715287f2008-12-02 22:34:15 +0000488* :ref:`pep-0343`. The :keyword:`with` statement is now a standard
Georg Brandlffd1a752008-12-03 06:44:59 +0000489 feature and no longer needs to be imported from the :mod:`__future__`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000490 Also check out :ref:`new-26-context-managers` and
491 :ref:`new-module-contextlib`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000492
Guido van Rossum715287f2008-12-02 22:34:15 +0000493* :ref:`pep-0366`. This enhances the usefulness of the :option:`-m`
494 option when the referenced module lives in a package.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000495
Guido van Rossum715287f2008-12-02 22:34:15 +0000496* :ref:`pep-0370`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000497
Guido van Rossum715287f2008-12-02 22:34:15 +0000498* :ref:`pep-0371`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000499
Guido van Rossum715287f2008-12-02 22:34:15 +0000500* :ref:`pep-3101`. Note: the 2.6 description mentions the
501 :meth:`format` method for both 8-bit and Unicode strings. In 3.0,
502 only the :class:`str` type (text strings with Unicode support)
503 supports this method; the :class:`bytes` type does not. The plan is
504 to eventually make this the only API for string formatting, and to
505 start deprecating the ``%`` operator in Python 3.1.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000506
Guido van Rossum715287f2008-12-02 22:34:15 +0000507* :ref:`pep-3105`. This is now a standard feature and no longer needs
Guido van Rossum67d75ba2008-12-03 02:31:31 +0000508 to be imported from :mod:`__future__`. More details were given above.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000509
Guido van Rossum715287f2008-12-02 22:34:15 +0000510* :ref:`pep-3110`. The :keyword:`except` *exc* :keyword:`as` *var*
511 syntax is now standard and :keyword:`except` *exc*, *var* is no
512 longer supported. (Of course, the :keyword:`as` *var* part is still
513 optional.)
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000514
Guido van Rossum715287f2008-12-02 22:34:15 +0000515* :ref:`pep-3112`. The ``b"..."`` string literal notation (and its
516 variants like ``b'...'``, ``b"""..."""``, and ``br"..."``) now
Guido van Rossum38287682008-12-03 02:03:19 +0000517 produces a literal of type :class:`bytes`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000518
Guido van Rossum715287f2008-12-02 22:34:15 +0000519* :ref:`pep-3116`. The :mod:`io` module is now the standard way of
Antoine Pitrou08c08eb2011-12-21 11:24:15 +0100520 doing file I/O. The built-in :func:`open` function is now an
Guido van Rossum715287f2008-12-02 22:34:15 +0000521 alias for :func:`io.open` and has additional keyword arguments
522 *encoding*, *errors*, *newline* and *closefd*. Also note that an
523 invalid *mode* argument now raises :exc:`ValueError`, not
Guido van Rossum38287682008-12-03 02:03:19 +0000524 :exc:`IOError`. The binary file object underlying a text file
525 object can be accessed as :attr:`f.buffer` (but beware that the
526 text object maintains a buffer of itself in order to speed up
527 the encoding and decoding operations).
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000528
Guido van Rossum715287f2008-12-02 22:34:15 +0000529* :ref:`pep-3118`. The old builtin :func:`buffer` is now really gone;
530 the new builtin :func:`memoryview` provides (mostly) similar
531 functionality.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000532
Guido van Rossum715287f2008-12-02 22:34:15 +0000533* :ref:`pep-3119`. The :mod:`abc` module and the ABCs defined in the
Guido van Rossum38287682008-12-03 02:03:19 +0000534 :mod:`collections` module plays a somewhat more prominent role in
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000535 the language now, and built-in collection types like :class:`dict`
Guido van Rossum715287f2008-12-02 22:34:15 +0000536 and :class:`list` conform to the :class:`collections.MutableMapping`
Raymond Hettingerab4c51c2008-12-03 15:04:01 +0000537 and :class:`collections.MutableSequence` ABCs, respectively.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000538
Guido van Rossum715287f2008-12-02 22:34:15 +0000539* :ref:`pep-3127`. As mentioned above, the new octal literal
540 notation is the only one supported, and binary literals have been
541 added.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000542
Guido van Rossum38287682008-12-03 02:03:19 +0000543* :ref:`pep-3129`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000544
Guido van Rossum715287f2008-12-02 22:34:15 +0000545* :ref:`pep-3141`. The :mod:`numbers` module is another new use of
546 ABCs, defining Python's "numeric tower". Also note the new
Guido van Rossum38287682008-12-03 02:03:19 +0000547 :mod:`fractions` module which implements :class:`numbers.Rational`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000548
549
550Library Changes
551===============
552
Guido van Rossumc46ee542008-12-02 23:46:46 +0000553Due to time constraints, this document does not exhaustively cover the
554very extensive changes to the standard library. :pep:`3108` is the
555reference for the major changes to the library. Here's a capsule
556review:
Guido van Rossum56076da2008-12-02 22:58:36 +0000557
Guido van Rossumc46ee542008-12-02 23:46:46 +0000558* Many old modules were removed. Some, like :mod:`gopherlib` (no
559 longer used) and :mod:`md5` (replaced by :mod:`hashlib`), were
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300560 already deprecated by :pep:`4`. Others were removed as a result
Guido van Rossumc46ee542008-12-02 23:46:46 +0000561 of the removal of support for various platforms such as Irix, BeOS
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300562 and Mac OS 9 (see :pep:`11`). Some modules were also selected for
Guido van Rossumc46ee542008-12-02 23:46:46 +0000563 removal in Python 3.0 due to lack of use or because a better
564 replacement exists. See :pep:`3108` for an exhaustive list.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000565
Guido van Rossumc46ee542008-12-02 23:46:46 +0000566* The :mod:`bsddb3` package was removed because its presence in the
567 core standard library has proved over time to be a particular burden
Guido van Rossum08388ef2008-12-03 05:39:28 +0000568 for the core developers due to testing instability and Berkeley DB's
Guido van Rossumc46ee542008-12-02 23:46:46 +0000569 release schedule. However, the package is alive and well,
Georg Brandl5d941342016-02-26 19:37:12 +0100570 externally maintained at https://www.jcea.es/programacion/pybsddb.htm.
Guido van Rossumc46ee542008-12-02 23:46:46 +0000571
Andrew M. Kuchling2982c322008-12-04 15:07:14 +0000572* Some modules were renamed because their old name disobeyed
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300573 :pep:`8`, or for various other reasons. Here's the list:
Guido van Rossumc46ee542008-12-02 23:46:46 +0000574
575 ======================= =======================
576 Old Name New Name
577 ======================= =======================
578 _winreg winreg
579 ConfigParser configparser
580 copy_reg copyreg
581 Queue queue
582 SocketServer socketserver
583 markupbase _markupbase
584 repr reprlib
585 test.test_support test.support
586 ======================= =======================
587
588* A common pattern in Python 2.x is to have one version of a module
589 implemented in pure Python, with an optional accelerated version
590 implemented as a C extension; for example, :mod:`pickle` and
591 :mod:`cPickle`. This places the burden of importing the accelerated
592 version and falling back on the pure Python version on each user of
593 these modules. In Python 3.0, the accelerated versions are
594 considered implementation details of the pure Python versions.
595 Users should always import the standard version, which attempts to
596 import the accelerated version and falls back to the pure Python
Guido van Rossumfedd1402008-12-03 04:15:35 +0000597 version. The :mod:`pickle` / :mod:`cPickle` pair received this
598 treatment. The :mod:`profile` module is on the list for 3.1. The
599 :mod:`StringIO` module has been turned into a class in the :mod:`io`
600 module.
Guido van Rossumc46ee542008-12-02 23:46:46 +0000601
602* Some related modules have been grouped into packages, and usually
603 the submodule names have been simplified. The resulting new
604 packages are:
605
606 * :mod:`dbm` (:mod:`anydbm`, :mod:`dbhash`, :mod:`dbm`,
607 :mod:`dumbdbm`, :mod:`gdbm`, :mod:`whichdb`).
608
609 * :mod:`html` (:mod:`HTMLParser`, :mod:`htmlentitydefs`).
610
611 * :mod:`http` (:mod:`httplib`, :mod:`BaseHTTPServer`,
612 :mod:`CGIHTTPServer`, :mod:`SimpleHTTPServer`, :mod:`Cookie`,
613 :mod:`cookielib`).
614
615 * :mod:`tkinter` (all :mod:`Tkinter`-related modules except
616 :mod:`turtle`). The target audience of :mod:`turtle` doesn't
617 really care about :mod:`tkinter`. Also note that as of Python
618 2.6, the functionality of :mod:`turtle` has been greatly enhanced.
619
Andrew M. Kuchling2982c322008-12-04 15:07:14 +0000620 * :mod:`urllib` (:mod:`urllib`, :mod:`urllib2`, :mod:`urlparse`,
Guido van Rossumc46ee542008-12-02 23:46:46 +0000621 :mod:`robotparse`).
622
623 * :mod:`xmlrpc` (:mod:`xmlrpclib`, :mod:`DocXMLRPCServer`,
624 :mod:`SimpleXMLRPCServer`).
Christian Heimes6e72b9e2008-12-03 13:39:03 +0000625
Guido van Rossum08388ef2008-12-03 05:39:28 +0000626Some other changes to standard library modules, not covered by
Guido van Rossumfedd1402008-12-03 04:15:35 +0000627:pep:`3108`:
Guido van Rossum715287f2008-12-02 22:34:15 +0000628
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000629* Killed :mod:`sets`. Use the built-in :func:`set` class.
Guido van Rossum715287f2008-12-02 22:34:15 +0000630
Guido van Rossumc46ee542008-12-02 23:46:46 +0000631* Cleanup of the :mod:`sys` module: removed :func:`sys.exitfunc`,
632 :func:`sys.exc_clear`, :data:`sys.exc_type`, :data:`sys.exc_value`,
633 :data:`sys.exc_traceback`. (Note that :data:`sys.last_type`
Guido van Rossum715287f2008-12-02 22:34:15 +0000634 etc. remain.)
635
Guido van Rossumc46ee542008-12-02 23:46:46 +0000636* Cleanup of the :class:`array.array` type: the :meth:`read` and
637 :meth:`write` methods are gone; use :meth:`fromfile` and
Georg Brandld2aa7e62008-12-06 08:12:11 +0000638 :meth:`tofile` instead. Also, the ``'c'`` typecode for array is
639 gone -- use either ``'b'`` for bytes or ``'u'`` for Unicode
640 characters.
Guido van Rossum715287f2008-12-02 22:34:15 +0000641
Guido van Rossumc46ee542008-12-02 23:46:46 +0000642* Cleanup of the :mod:`operator` module: removed
643 :func:`sequenceIncludes` and :func:`isCallable`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000644
Guido van Rossumc46ee542008-12-02 23:46:46 +0000645* Cleanup of the :mod:`thread` module: :func:`acquire_lock` and
646 :func:`release_lock` are gone; use :func:`acquire` and
647 :func:`release` instead.
Guido van Rossum715287f2008-12-02 22:34:15 +0000648
Guido van Rossumc46ee542008-12-02 23:46:46 +0000649* Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API.
Guido van Rossum715287f2008-12-02 22:34:15 +0000650
Guido van Rossumfedd1402008-12-03 04:15:35 +0000651* The :mod:`new` module is gone.
652
653* The functions :func:`os.tmpnam`, :func:`os.tempnam` and
654 :func:`os.tmpfile` have been removed in favor of the :mod:`tempfile`
655 module.
656
657* The :mod:`tokenize` module has been changed to work with bytes. The
658 main entry point is now :func:`tokenize.tokenize`, instead of
659 generate_tokens.
660
661* :data:`string.letters` and its friends (:data:`string.lowercase` and
662 :data:`string.uppercase`) are gone. Use
663 :data:`string.ascii_letters` etc. instead. (The reason for the
Andrew M. Kuchling2982c322008-12-04 15:07:14 +0000664 removal is that :data:`string.letters` and friends had
Guido van Rossumfedd1402008-12-03 04:15:35 +0000665 locale-specific behavior, which is a bad idea for such
666 attractively-named global "constants".)
667
668* Renamed module :mod:`__builtin__` to :mod:`builtins` (removing the
669 underscores, adding an 's'). The :data:`__builtins__` variable
670 found in most global namespaces is unchanged. To modify a builtin,
671 you should use :mod:`builtins`, not :data:`__builtins__`!
672
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000673
Guido van Rossum715287f2008-12-02 22:34:15 +0000674:pep:`3101`: A New Approach To String Formatting
675================================================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000676
Guido van Rossum4a98a2a2008-11-21 18:35:43 +0000677* A new system for built-in string formatting operations replaces the
678 ``%`` string formatting operator. (However, the ``%`` operator is
679 still supported; it will be deprecated in Python 3.1 and removed
Guido van Rossum38287682008-12-03 02:03:19 +0000680 from the language at some later time.) Read :pep:`3101` for the full
681 scoop.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000682
683
Guido van Rossumfedd1402008-12-03 04:15:35 +0000684Changes To Exceptions
685=====================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000686
Guido van Rossumfedd1402008-12-03 04:15:35 +0000687The APIs for raising and catching exception have been cleaned up and
688new powerful features added:
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000689
Serhiy Storchakae4ba8722016-03-31 15:30:54 +0300690* :pep:`352`: All exceptions must be derived (directly or indirectly)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000691 from :exc:`BaseException`. This is the root of the exception
Guido van Rossumfedd1402008-12-03 04:15:35 +0000692 hierarchy. This is not new as a recommendation, but the
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000693 *requirement* to inherit from :exc:`BaseException` is new. (Python
694 2.6 still allowed classic classes to be raised, and placed no
Guido van Rossumfedd1402008-12-03 04:15:35 +0000695 restriction on what you can catch.) As a consequence, string
696 exceptions are finally truly and utterly dead.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000697
Guido van Rossumfedd1402008-12-03 04:15:35 +0000698* Almost all exceptions should actually derive from :exc:`Exception`;
699 :exc:`BaseException` should only be used as a base class for
700 exceptions that should only be handled at the top level, such as
701 :exc:`SystemExit` or :exc:`KeyboardInterrupt`. The recommended
702 idiom for handling all exceptions except for this latter category is
703 to use :keyword:`except` :exc:`Exception`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000704
Georg Brandl0a7b2c72009-02-06 18:11:01 +0000705* :exc:`StandardError` was removed.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000706
Guido van Rossumfedd1402008-12-03 04:15:35 +0000707* Exceptions no longer behave as sequences. Use the :attr:`args`
708 attribute instead.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000709
Georg Brandl8f9cd6a2008-12-15 09:16:15 +0000710* :pep:`3109`: Raising exceptions. You must now use :samp:`raise
711 {Exception}({args})` instead of :samp:`raise {Exception}, {args}`.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000712 Additionally, you can no longer explicitly specify a traceback;
713 instead, if you *have* to do this, you can assign directly to the
714 :attr:`__traceback__` attribute (see below).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000715
Guido van Rossumfedd1402008-12-03 04:15:35 +0000716* :pep:`3110`: Catching exceptions. You must now use
Georg Brandl8f9cd6a2008-12-15 09:16:15 +0000717 :samp:`except {SomeException} as {variable}` instead
718 of :samp:`except {SomeException}, {variable}`. Moreover, the
Guido van Rossumfedd1402008-12-03 04:15:35 +0000719 *variable* is explicitly deleted when the :keyword:`except` block
720 is left.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000721
Guido van Rossumfedd1402008-12-03 04:15:35 +0000722* :pep:`3134`: Exception chaining. There are two cases: implicit
723 chaining and explicit chaining. Implicit chaining happens when an
724 exception is raised in an :keyword:`except` or :keyword:`finally`
725 handler block. This usually happens due to a bug in the handler
726 block; we call this a *secondary* exception. In this case, the
727 original exception (that was being handled) is saved as the
728 :attr:`__context__` attribute of the secondary exception.
729 Explicit chaining is invoked with this syntax::
730
731 raise SecondaryException() from primary_exception
732
733 (where *primary_exception* is any expression that produces an
734 exception object, probably an exception that was previously caught).
735 In this case, the primary exception is stored on the
736 :attr:`__cause__` attribute of the secondary exception. The
737 traceback printed when an unhandled exception occurs walks the chain
738 of :attr:`__cause__` and :attr:`__context__` attributes and prints a
739 separate traceback for each component of the chain, with the primary
Fred Drake9baee312008-12-04 15:28:51 +0000740 exception at the top. (Java users may recognize this behavior.)
Guido van Rossumfedd1402008-12-03 04:15:35 +0000741
742* :pep:`3134`: Exception objects now store their traceback as the
743 :attr:`__traceback__` attribute. This means that an exception
744 object now contains all the information pertaining to an exception,
745 and there are fewer reasons to use :func:`sys.exc_info` (though the
746 latter is not removed).
747
748* A few exception messages are improved when Windows fails to load an
749 extension module. For example, ``error code 193`` is now ``%1 is
750 not a valid Win32 application``. Strings now deal with non-English
751 locales.
Georg Brandl396ef802008-02-02 10:30:18 +0000752
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000753
Guido van Rossumfedd1402008-12-03 04:15:35 +0000754Miscellaneous Other Changes
755===========================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000756
Guido van Rossumfedd1402008-12-03 04:15:35 +0000757Operators And Special Methods
758-----------------------------
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000759
Georg Brandl396ef802008-02-02 10:30:18 +0000760* ``!=`` now returns the opposite of ``==``, unless ``==`` returns
Guido van Rossumfedd1402008-12-03 04:15:35 +0000761 :data:`NotImplemented`.
Georg Brandl396ef802008-02-02 10:30:18 +0000762
Guido van Rossumfedd1402008-12-03 04:15:35 +0000763* The concept of "unbound methods" has been removed from the language.
Guido van Rossum715287f2008-12-02 22:34:15 +0000764 When referencing a method as a class attribute, you now get a plain
765 function object.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000766
Guido van Rossum715287f2008-12-02 22:34:15 +0000767* :meth:`__getslice__`, :meth:`__setslice__` and :meth:`__delslice__`
768 were killed. The syntax ``a[i:j]`` now translates to
769 ``a.__getitem__(slice(i, j))`` (or :meth:`__setitem__` or
770 :meth:`__delitem__`, when used as an assignment or deletion target,
771 respectively).
Georg Brandl396ef802008-02-02 10:30:18 +0000772
Guido van Rossumfedd1402008-12-03 04:15:35 +0000773* :pep:`3114`: the standard :meth:`next` method has been renamed to
Ezio Melotti7fa82222012-10-12 13:42:08 +0300774 :meth:`~iterator.__next__`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000775
Guido van Rossumfedd1402008-12-03 04:15:35 +0000776* The :meth:`__oct__` and :meth:`__hex__` special methods are removed
777 -- :func:`oct` and :func:`hex` use :meth:`__index__` now to convert
778 the argument to an integer.
779
780* Removed support for :attr:`__members__` and :attr:`__methods__`.
781
782* The function attributes named :attr:`func_X` have been renamed to
783 use the :data:`__X__` form, freeing up these names in the function
784 attribute namespace for user-defined attributes. To wit,
785 :attr:`func_closure`, :attr:`func_code`, :attr:`func_defaults`,
786 :attr:`func_dict`, :attr:`func_doc`, :attr:`func_globals`,
787 :attr:`func_name` were renamed to :attr:`__closure__`,
Martin Panterbae5d812016-06-18 03:57:31 +0000788 :attr:`__code__`, :attr:`__defaults__`, :attr:`~object.__dict__`,
789 :attr:`__doc__`, :attr:`__globals__`, :attr:`~definition.__name__`,
Guido van Rossumfedd1402008-12-03 04:15:35 +0000790 respectively.
791
792* :meth:`__nonzero__` is now :meth:`__bool__`.
793
794Builtins
795--------
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000796
Guido van Rossum715287f2008-12-02 22:34:15 +0000797* :pep:`3135`: New :func:`super`. You can now invoke :func:`super`
Guido van Rossumfedd1402008-12-03 04:15:35 +0000798 without arguments and (assuming this is in a regular instance method
799 defined inside a :keyword:`class` statement) the right class and
800 instance will automatically be chosen. With arguments, the behavior
801 of :func:`super` is unchanged.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000802
Guido van Rossumfedd1402008-12-03 04:15:35 +0000803* :pep:`3111`: :func:`raw_input` was renamed to :func:`input`. That
804 is, the new :func:`input` function reads a line from
805 :data:`sys.stdin` and returns it with the trailing newline stripped.
806 It raises :exc:`EOFError` if the input is terminated prematurely.
807 To get the old behavior of :func:`input`, use ``eval(input())``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000808
Georg Brandlc4a55fc2010-02-06 18:46:57 +0000809* A new built-in function :func:`next` was added to call the
Ezio Melotti7fa82222012-10-12 13:42:08 +0300810 :meth:`~iterator.__next__` method on an object.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000811
Mark Dickinsonf4112e22010-06-17 18:24:52 +0000812* The :func:`round` function rounding strategy and return type have
813 changed. Exact halfway cases are now rounded to the nearest even
814 result instead of away from zero. (For example, ``round(2.5)`` now
Andrew Svetlova2fe3342012-08-11 21:14:08 +0300815 returns ``2`` rather than ``3``.) ``round(x[, n])`` now
Mark Dickinsonf4112e22010-06-17 18:24:52 +0000816 delegates to ``x.__round__([n])`` instead of always returning a
817 float. It generally returns an integer when called with a single
818 argument and a value of the same type as ``x`` when called with two
819 arguments.
820
Guido van Rossumfedd1402008-12-03 04:15:35 +0000821* Moved :func:`intern` to :func:`sys.intern`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000822
Guido van Rossum715287f2008-12-02 22:34:15 +0000823* Removed: :func:`apply`. Instead of ``apply(f, args)`` use
824 ``f(*args)``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000825
Guido van Rossum715287f2008-12-02 22:34:15 +0000826* Removed :func:`callable`. Instead of ``callable(f)`` you can use
Benjamin Peterson36e0d0e2009-10-03 15:13:15 +0000827 ``isinstance(f, collections.Callable)``. The :func:`operator.isCallable`
828 function is also gone.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000829
Guido van Rossum715287f2008-12-02 22:34:15 +0000830* Removed :func:`coerce`. This function no longer serves a purpose
831 now that classic classes are gone.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000832
Guido van Rossum715287f2008-12-02 22:34:15 +0000833* Removed :func:`execfile`. Instead of ``execfile(fn)`` use
834 ``exec(open(fn).read())``.
Georg Brandl396ef802008-02-02 10:30:18 +0000835
Benjamin Peterson30364202009-03-23 02:49:51 +0000836* Removed the :class:`file` type. Use :func:`open`. There are now several
837 different kinds of streams that open can return in the :mod:`io` module.
Georg Brandl396ef802008-02-02 10:30:18 +0000838
Guido van Rossum715287f2008-12-02 22:34:15 +0000839* Removed :func:`reduce`. Use :func:`functools.reduce` if you really
840 need it; however, 99 percent of the time an explicit :keyword:`for`
841 loop is more readable.
Georg Brandl396ef802008-02-02 10:30:18 +0000842
Georg Brandl48310cd2009-01-03 21:18:54 +0000843* Removed :func:`reload`. Use :func:`imp.reload`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000844
845* Removed. :meth:`dict.has_key` -- use the :keyword:`in` operator
846 instead.
847
Guido van Rossumfedd1402008-12-03 04:15:35 +0000848.. ======================================================================
Guido van Rossum715287f2008-12-02 22:34:15 +0000849
Guido van Rossumfedd1402008-12-03 04:15:35 +0000850
851Build and C API Changes
852=======================
853
854Due to time constraints, here is a *very* incomplete list of changes
855to the C API.
856
857* Support for several platforms was dropped, including but not limited
858 to Mac OS 9, BeOS, RISCOS, Irix, and Tru64.
859
860* :pep:`3118`: New Buffer API.
861
862* :pep:`3121`: Extension Module Initialization & Finalization.
863
Georg Brandl60203b42010-10-06 10:11:56 +0000864* :pep:`3123`: Making :c:macro:`PyObject_HEAD` conform to standard C.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000865
866* No more C API support for restricted execution.
867
Georg Brandl60203b42010-10-06 10:11:56 +0000868* :c:func:`PyNumber_Coerce`, :c:func:`PyNumber_CoerceEx`,
869 :c:func:`PyMember_Get`, and :c:func:`PyMember_Set` C APIs are removed.
Guido van Rossumfedd1402008-12-03 04:15:35 +0000870
Georg Brandl60203b42010-10-06 10:11:56 +0000871* New C API :c:func:`PyImport_ImportModuleNoBlock`, works like
872 :c:func:`PyImport_ImportModule` but won't block on the import lock
Guido van Rossumfedd1402008-12-03 04:15:35 +0000873 (returning an error instead).
Guido van Rossum715287f2008-12-02 22:34:15 +0000874
875* Renamed the boolean conversion C-level slot and method:
Guido van Rossumfedd1402008-12-03 04:15:35 +0000876 ``nb_nonzero`` is now ``nb_bool``.
Guido van Rossum715287f2008-12-02 22:34:15 +0000877
Georg Brandl60203b42010-10-06 10:11:56 +0000878* Removed :c:macro:`METH_OLDARGS` and :c:macro:`WITH_CYCLE_GC` from the C API.
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 Rossumfedd1402008-12-03 04:15:35 +0000883Performance
884===========
Georg Brandl116aa622007-08-15 14:28:22 +0000885
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000886The net result of the 3.0 generalizations is that Python 3.0 runs the
Guido van Rossum715287f2008-12-02 22:34:15 +0000887pystone benchmark around 10% slower than Python 2.5. Most likely the
888biggest cause is the removal of special-casing for small integers.
889There's room for improvement, but it will happen after 3.0 is
890released!
Georg Brandl116aa622007-08-15 14:28:22 +0000891
Georg Brandl5a165582007-08-31 06:15:01 +0000892.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000893
894
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000895Porting To Python 3.0
Georg Brandl116aa622007-08-15 14:28:22 +0000896=====================
897
Guido van Rossum56076da2008-12-02 22:58:36 +0000898For porting existing Python 2.5 or 2.6 source code to Python 3.0, the
899best strategy is the following:
Georg Brandl116aa622007-08-15 14:28:22 +0000900
Guido van Rossum56076da2008-12-02 22:58:36 +00009010. (Prerequisite:) Start with excellent test coverage.
Georg Brandl116aa622007-08-15 14:28:22 +0000902
Guido van Rossum56076da2008-12-02 22:58:36 +00009031. Port to Python 2.6. This should be no more work than the average
904 port from Python 2.x to Python 2.(x+1). Make sure all your tests
905 pass.
Christian Heimesf78b1c62007-12-02 16:52:32 +0000906
Martin Panter5c679332016-10-30 04:20:17 +00009072. (Still using 2.6:) Turn on the :option:`!-3` command line switch.
Guido van Rossum56076da2008-12-02 22:58:36 +0000908 This enables warnings about features that will be removed (or
909 change) in 3.0. Run your test suite again, and fix code that you
910 get warnings about until there are no warnings left, and all your
911 tests still pass.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000912
Guido van Rossum56076da2008-12-02 22:58:36 +00009133. Run the ``2to3`` source-to-source translator over your source code
914 tree. (See :ref:`2to3-reference` for more on this tool.) Run the
915 result of the translation under Python 3.0. Manually fix up any
916 remaining issues, fixing problems until all tests pass again.
917
918It is not recommended to try to write source code that runs unchanged
919under both Python 2.6 and 3.0; you'd have to use a very contorted
Georg Brandl375aec22011-01-15 17:03:02 +0000920coding style, e.g. avoiding ``print`` statements, metaclasses,
Guido van Rossum56076da2008-12-02 22:58:36 +0000921and much more. If you are maintaining a library that needs to support
922both Python 2.6 and Python 3.0, the best approach is to modify step 3
923above by editing the 2.6 version of the source code and running the
924``2to3`` translator again, rather than editing the 3.0 version of the
925source code.
926
927For porting C extensions to Python 3.0, please see :ref:`cporting-howto`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000928
Georg Brandl5a165582007-08-31 06:15:01 +0000929.. ======================================================================