blob: a2afb32ffe43ca644b82ea07d1447038d1c4e9ac [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001****************************
Guido van Rossumeb3d8d42008-12-02 00:56:25 +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 Brandl5a165582007-08-31 06:15:01 +000013
14 * 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.
17
18 * 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 Brandl5a165582007-08-31 06:15:01 +000022
23 * 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.)
28
29 * 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.
32
33 * 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.
37
38 * You can comment out your additions if you like, but it's not
39 necessary (especially when a final release is some months away).
40
41 * 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 Brandl5a165582007-08-31 06:15:01 +000044
45 * It's helpful to add the bug/patch number as a comment:
46
47 % Patch 12345
48 XXX Describe the transmogrify() function added to the socket
49 module.
50 (Contributed by P.Y. Developer.)
51
52 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
Guido van Rossum715287f2008-12-02 22:34:15 +000099The :keyword:`print` statement has been replaced with a :func:`print`
100function, with keyword arguments to replace most of the special syntax
101of the old :keyword:`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
Guido van Rossum715287f2008-12-02 22:34:15 +0000129 the old :keyword:`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
Guido van Rossum715287f2008-12-02 22:34:15 +0000138 :keyword:`print` statements are automatically converted to
139 :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
181 :keyword:`False`. A corollary is that sorting a heterogeneous list
182 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
185 unequal to each other, and an object always compares equal to itself
186 (i.e., ``x is y`` implies ``x == y``; this is true even for *NaN*).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000187
Guido van Rossumfedd1402008-12-03 04:15:35 +0000188* :meth:`builtin.sorted` and :meth:`list.sort` no longer accept the
189 *cmp* argument providing a comparison function. Use the *key*
190 argument instead. N.B. the *key* and *reverse* arguments are now
191 "keyword-only".
Kurt B. Kaisera1401012008-02-13 16:09:27 +0000192
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000193* The :func:`cmp` function is gone, and the :meth:`__cmp__` special
194 method is no longer supported. Use :meth:`__lt__` for sorting,
195 :meth:`__eq__` with :meth:`__hash__`, and other rich comparisons as
Guido van Rossum73961352008-12-03 00:54:52 +0000196 needed. (If you really need the :func:`cmp` functionality, you
197 could use the expression ``(a > b) - (a < b)`` as the equivalent for
198 ``cmp(a, b)``.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000199
200Integers
201--------
202
Guido van Rossum73961352008-12-03 00:54:52 +0000203* :pep:`0237`: Essentially, :class:`long` renamed to :class:`int`.
204 That is, there is only one built-in integral type, named
205 :class:`int`; but it behaves mostly like the old :class:`long` type.
Guido van Rossum4a98a2a2008-11-21 18:35:43 +0000206
Guido van Rossum73961352008-12-03 00:54:52 +0000207* :pep:`0238`: An expression like ``1/2`` returns a float. Use
208 ``1//2`` to get the truncating behavior. (The latter syntax has
209 existed for years, at least since Python 2.2.)
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000210
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000211* The :data:`sys.maxint` constant was removed, since there is no
Guido van Rossum08388ef2008-12-03 05:39:28 +0000212 longer a limit to the value of integers. However, :data:`sys.maxsize`
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000213 can be used as an integer larger than any practical list or string
214 index. It conforms to the implementation's "natural" integer size
215 and is typically the same as :data:`sys.maxint` in previous releases
216 on the same platform (assuming the same build options).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000217
Guido van Rossum73961352008-12-03 00:54:52 +0000218* The :func:`repr` of a long integer doesn't include the trailing ``L``
219 anymore, so code that unconditionally strips that character will
220 chop off the last digit instead. (Use :func:`str` instead.)
221
222* Octal literals are no longer of the form ``0720``; use ``0o720``
223 instead.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000224
Guido van Rossumfedd1402008-12-03 04:15:35 +0000225Text Vs. Data Instead Of Unicode Vs. 8-bit
226------------------------------------------
227
228Everything you thought you knew about binary data and Unicode has
229changed.
230
231* Python 3.0 uses the concepts of *text* and (binary) *data* instead
232 of Unicode strings and 8-bit strings. All text is Unicode; however
233 *encoded* Unicode is represented as binary data. The type used to
234 hold text is :class:`str`, the type used to hold data is
235 :class:`bytes`. The biggest difference with the 2.x situation is
236 that any attempt to mix text and data in Python 3.0 raises
Guido van Rossumb768d4f2008-12-03 04:18:17 +0000237 :exc:`TypeError`, whereas if you were to mix Unicode and 8-bit
Guido van Rossumfedd1402008-12-03 04:15:35 +0000238 strings in Python 2.x, it would work if the 8-bit string happened to
239 contain only 7-bit (ASCII) bytes, but you would get
Guido van Rossumb768d4f2008-12-03 04:18:17 +0000240 :exc:`UnicodeDecodeError` if it contained non-ASCII values. This
Guido van Rossumfedd1402008-12-03 04:15:35 +0000241 value-specific behavior has caused numerous sad faces over the
242 years.
243
244* As a consequence of this change in philosophy, pretty much all code
245 that uses Unicode, encodings or binary data most likely has to
246 change. The change is for the better, as in the 2.x world there
247 were numerous bugs having to do with mixing encoded and unencoded
248 text. To be prepared in Python 2.x, start using :class:`unicode`
249 for all unencoded text, and :class:`str` for binary or encoded data
250 only. Then the ``2to3`` tool will do most of the work for you.
251
252* You can no longer use ``u"..."`` literals for Unicode text.
253 However, you must use ``b"..."`` literals for binary data.
254
255* As the :class:`str` and :class:`bytes` types cannot be mixed, you
256 must always explicitly convert between them. Use :meth:`str.encode`
257 to go from :class:`str` to :class:`bytes`, and :meth:`bytes.decode`
258 to go from :class:`bytes` to :class:`str`. You can also use
259 ``bytes(s, encoding=...)`` and ``str(b, encoding=...)``,
260 respectively.
261
262* Like :class:`str`, the :class:`bytes` type is immutable. There is a
263 separate *mutable* type to hold buffered binary data,
264 :class:`bytearray`. Nearly all APIs that accept :class:`bytes` also
265 accept :class:`bytearray`. The mutable API is based on
266 :class:`collections.MutableSequence`.
267
268* All backslashes in raw string literals are interpreted literally.
269 This means that ``'\U'`` and ``'\u'`` escapes in raw strings are not
270 treated specially. For example, ``r'\u20ac'`` is a string of 6
271 characters in Python 3.0, whereas in 2.6, ``ur'\u20ac'`` was the
272 single "euro" character. (Of course, this change only affects raw
273 string literals; the euro character is ``'\u20ac'`` in Python 3.0.)
274
275* The builtin :class:`basestring` abstract type was removed. Use
276 :class:`str` instead. The :class:`str` and :class:`bytes` types
277 don't have functionality enough in common to warrant a shared base
278 class. The ``2to3`` tool (see below) replaces every occurrence of
279 :class:`basestring` with :class:`str`.
280
281* Files opened as text files (still the default mode for :func:`open`)
282 always use an encoding to map between strings (in memory) and bytes
283 (on disk). Binary files (opened with a ``b`` in the mode argument)
284 always use bytes in memory. This means that if a file is opened
285 using an incorrect mode or encoding, I/O will likely fail loudly,
286 instead of silently producing incorrect data. It also means that
287 even Unix users will have to specify the correct mode (text or
288 binary) when opening a file. There is a platform-dependent default
289 encoding, which on Unixy platforms can be set with the ``LANG``
290 environment variable (and sometimes also with some other
291 platform-specific locale-related environment variables). In many
292 cases, but not all, the system default is UTF-8; you should never
293 count on this default. Any application reading or writing more than
294 pure ASCII text should probably have a way to override the encoding.
295 There is no longer any need for using the encoding-aware streams
296 in the :mod:`codecs` module.
297
298* Filenames are passed to and returned from APIs as (Unicode) strings.
299 This can present platform-specific problems because on some
300 platforms filenames are arbitrary byte strings. (On the other hand,
301 on Windows filenames are natively stored as Unicode.) As a
302 work-around, most APIs (e.g. :func:`open` and many functions in the
303 :mod:`os` module) that take filenames accept :class:`bytes` objects
304 as well as strings, and a few APIs have a way to ask for a
305 :class:`bytes` return value. Thus, :func:`os.listdir` returns a
306 list of :class:`bytes` instances if the argument is a :class:`bytes`
307 instance, and :func:`os.getcwdu` returns the current working
308 directory as a :class:`bytes` instance. Note that when
309 :func:`os.listdir` returns a list of strings, filenames that
310 cannot be decoded properly are omitted rather than raising
311 :exc:`UnicodeError`.
312
313* Some system APIs like :data:`os.environ` and :data:`sys.argv` can
314 also present problems when the bytes made available by the system is
315 not interpretable using the default encoding. Setting the ``LANG``
316 variable and rerunning the program is probably the best approach.
317
318* :pep:`3138`: The :func:`repr` of a string no longer escapes
319 non-ASCII characters. It still escapes control characters and code
320 points with non-printable status in the Unicode standard, however.
321
322* :pep:`3120`: The default source encoding is now UTF-8.
323
324* :pep:`3131`: Non-ASCII letters are now allowed in identifiers.
325 (However, the standard library remains ASCII-only with the exception
326 of contributor names in comments.)
327
328* The :mod:`StringIO` and :mod:`cStringIO` modules are gone. Instead,
329 import the :mod:`io` module and use :class:`io.StringIO` or
330 :class:`io.BytesIO` for text and data respectively.
331
332* See also the :ref:`unicode-howto`, which was updated for Python 3.0.
333
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000334
Guido van Rossum73961352008-12-03 00:54:52 +0000335Overview Of Syntax Changes
336==========================
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000337
Guido van Rossum73961352008-12-03 00:54:52 +0000338This section gives a brief overview of every *syntactic* change in
339Python 3.0.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000340
Guido van Rossum38287682008-12-03 02:03:19 +0000341New Syntax
342----------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000343
Guido van Rossum73961352008-12-03 00:54:52 +0000344* :pep:`3107`: Function argument and return value annotations. This
345 provides a standardized way of annotating a function's parameters
346 and return value. There are no semantics attached to such
347 annotations except that they can be introspected at runtime using
348 the :attr:`__annotations__` attribute. The intent is to encourage
349 experimentation through metaclasses, decorators or frameworks.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000350
Guido van Rossum715287f2008-12-02 22:34:15 +0000351* :pep:`3102`: Keyword-only arguments. Named parameters occurring
352 after ``*args`` in the parameter list *must* be specified using
353 keyword syntax in the call. You can also use a bare ``*`` in the
354 parameter list to indicate that you don't accept a variable-length
355 argument list, but you do have keyword-only arguments.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000356
357* Keyword arguments are allowed after the list of base classes in a
358 class definition. This is used by the new convention for specifying
Guido van Rossumfedd1402008-12-03 04:15:35 +0000359 a metaclass (see next section), but can be used for other purposes
360 as well, as long as the metaclass supports it.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000361
Guido van Rossum715287f2008-12-02 22:34:15 +0000362* :pep:`3104`: :keyword:`nonlocal` statement. Using ``nonlocal x``
363 you can now assign directly to a variable in an outer (but
364 non-global) scope. :keyword:`nonlocal` is a new reserved word.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000365
Guido van Rossum715287f2008-12-02 22:34:15 +0000366* :pep:`3132`: Extended Iterable Unpacking. You can now write things
367 like ``a, b, *rest = some_sequence``. And even ``*rest, a =
368 stuff``. The ``rest`` object is always a (possibly empty) list; the
369 right-hand side may be any iterable. Example::
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000370
Guido van Rossum715287f2008-12-02 22:34:15 +0000371 (a, *rest, b) = range(5)
372
373 This sets *a* to ``0``, *b* to ``4``, and \*rest to ``[1, 2, 3]``.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000374
375* Dictionary comprehensions: ``{k: v for k, v in stuff}`` means the
Guido van Rossum73961352008-12-03 00:54:52 +0000376 same thing as ``dict(stuff)`` but is more flexible. (This is
377 :pep:`0274` vindicated. :-)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000378
379* Set literals, e.g. ``{1, 2}``. Note that ``{}`` is an empty
Guido van Rossum715287f2008-12-02 22:34:15 +0000380 dictionary; use ``set()`` for an empty set. Set comprehensions are
Guido van Rossum73961352008-12-03 00:54:52 +0000381 also supported; e.g., ``{x for x in stuff}`` means the same thing as
Guido van Rossum715287f2008-12-02 22:34:15 +0000382 ``set(stuff)`` but is more flexible.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000383
384* New octal literals, e.g. ``0o720`` (already in 2.6). The old octal
Walter Dörwaldeab34c92008-12-02 11:58:09 +0000385 literals (``0720``) are gone.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000386
387* New binary literals, e.g. ``0b1010`` (already in 2.6).
388
Raymond Hettingerab4c51c2008-12-03 15:04:01 +0000389* Bytes literals are introduced with a leading ``b`` or ``B``, and
390 there is a new corresponding builtin function, :func:`bin`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000391
Guido van Rossum38287682008-12-03 02:03:19 +0000392Changed Syntax
393--------------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000394
Guido van Rossumfedd1402008-12-03 04:15:35 +0000395* :pep:`3109` and :pep:`3134`: new :keyword:`raise` statement syntax:
396 ``raise [expr [from expr]]``. See below.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000397
Guido van Rossum715287f2008-12-02 22:34:15 +0000398* :keyword:`as` and :keyword:`with` are now reserved words. (Since
399 2.6, actually.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000400
Guido van Rossum715287f2008-12-02 22:34:15 +0000401* :keyword:`True`, :keyword:`False`, and :keyword:`None` are reserved
402 words. (2.6 partially enforced the restrictions on :keyword:`None`
403 already.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000404
Guido van Rossum715287f2008-12-02 22:34:15 +0000405* Change from :keyword:`except` *exc*, *var* to
406 :keyword:`except` *exc* :keyword:`as` *var*. See :pep:`3110`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000407
Guido van Rossumfedd1402008-12-03 04:15:35 +0000408* :pep:`3115`: New Metaclass Syntax. Instead of::
409
410 class C:
411 __metaclass__ = M
412 ...
413
414 you must now use::
415
416 class C(metaclass=M):
417 ...
418
419 The module-global :data:`__metaclass__` variable is no longer
420 supported. (It was a crutch to make it easier to default to
421 new-style classes without deriving every class from
422 :class:`object`.)
423
Guido van Rossum715287f2008-12-02 22:34:15 +0000424* List comprehensions no longer support the syntactic form
425 ``[... for var in item1, item2, ...]``. Use
426 ``[... for var in (item1, item2, ...)]`` instead.
427 Also note that list comprehensions have different semantics: they
428 are closer to syntactic sugar for a generator expression inside a
429 :func:`list` constructor, and in particular the loop control
430 variables are no longer leaked into the surrounding scope.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000431
Guido van Rossum715287f2008-12-02 22:34:15 +0000432* The *ellipsis* (``...``) can be used as an atomic expression
433 anywhere. (Previously it was only allowed in slices.) Also, it
434 *must* now be spelled as ``...``. (Previously it could also be
435 spelled as ``. . .``, by a mere accident of the grammar.)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000436
Guido van Rossum38287682008-12-03 02:03:19 +0000437Removed Syntax
438--------------
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000439
Guido van Rossum715287f2008-12-02 22:34:15 +0000440* :pep:`3113`: Tuple parameter unpacking removed. You can no longer
441 write ``def foo(a, (b, c)): ...``.
442 Use ``def foo(a, b_c): b, c = b_c`` instead.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000443
Guido van Rossum715287f2008-12-02 22:34:15 +0000444* Removed backticks (use :func:`repr` instead).
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000445
Guido van Rossum715287f2008-12-02 22:34:15 +0000446* Removed ``<>`` (use ``!=`` instead).
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000447
448* Removed keyword: :func:`exec` is no longer a keyword; it remains as
449 a function. (Fortunately the function syntax was also accepted in
Guido van Rossum715287f2008-12-02 22:34:15 +0000450 2.x.) Also note that :func:`exec` no longer takes a stream argument;
451 instead of ``exec(f)`` you can use ``exec(f.read())``.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000452
453* Integer literals no longer support a trailing ``l`` or ``L``.
454
455* String literals no longer support a leading ``u`` or ``U``.
456
Guido van Rossum715287f2008-12-02 22:34:15 +0000457* The :keyword:`from` *module* :keyword:`import` ``*`` syntax is only
458 allowed at the module level, no longer inside functions.
459
460* The only acceptable syntax for relative imports is :keyword:`from`
461 ``.``[*module*] :keyword:`import` *name*; :keyword:`import` forms
462 not starting with ``.`` are always interpreted as absolute imports.
463 (:pep:`0328`)
464
Guido van Rossumfedd1402008-12-03 04:15:35 +0000465* Classic classes are gone.
466
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000467
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000468Changes Already Present In Python 2.6
469=====================================
470
Guido van Rossum715287f2008-12-02 22:34:15 +0000471Since many users presumably make the jump straight from Python 2.5 to
472Python 3.0, this section reminds the reader of new features that were
473originally designed for Python 3.0 but that were back-ported to Python
4742.6. The corresponding sections in :ref:`whats-new-in-2.6` should be
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000475consulted for longer descriptions.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000476
Guido van Rossum715287f2008-12-02 22:34:15 +0000477* :ref:`pep-0343`. The :keyword:`with` statement is now a standard
Georg Brandlffd1a752008-12-03 06:44:59 +0000478 feature and no longer needs to be imported from the :mod:`__future__`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000479 Also check out :ref:`new-26-context-managers` and
480 :ref:`new-module-contextlib`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000481
Guido van Rossum715287f2008-12-02 22:34:15 +0000482* :ref:`pep-0366`. This enhances the usefulness of the :option:`-m`
483 option when the referenced module lives in a package.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000484
Guido van Rossum715287f2008-12-02 22:34:15 +0000485* :ref:`pep-0370`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000486
Guido van Rossum715287f2008-12-02 22:34:15 +0000487* :ref:`pep-0371`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000488
Guido van Rossum715287f2008-12-02 22:34:15 +0000489* :ref:`pep-3101`. Note: the 2.6 description mentions the
490 :meth:`format` method for both 8-bit and Unicode strings. In 3.0,
491 only the :class:`str` type (text strings with Unicode support)
492 supports this method; the :class:`bytes` type does not. The plan is
493 to eventually make this the only API for string formatting, and to
494 start deprecating the ``%`` operator in Python 3.1.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000495
Guido van Rossum715287f2008-12-02 22:34:15 +0000496* :ref:`pep-3105`. This is now a standard feature and no longer needs
Guido van Rossum67d75ba2008-12-03 02:31:31 +0000497 to be imported from :mod:`__future__`. More details were given above.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000498
Guido van Rossum715287f2008-12-02 22:34:15 +0000499* :ref:`pep-3110`. The :keyword:`except` *exc* :keyword:`as` *var*
500 syntax is now standard and :keyword:`except` *exc*, *var* is no
501 longer supported. (Of course, the :keyword:`as` *var* part is still
502 optional.)
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000503
Guido van Rossum715287f2008-12-02 22:34:15 +0000504* :ref:`pep-3112`. The ``b"..."`` string literal notation (and its
505 variants like ``b'...'``, ``b"""..."""``, and ``br"..."``) now
Guido van Rossum38287682008-12-03 02:03:19 +0000506 produces a literal of type :class:`bytes`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000507
Guido van Rossum715287f2008-12-02 22:34:15 +0000508* :ref:`pep-3116`. The :mod:`io` module is now the standard way of
509 doing file I/O, and the initial values of :data:`sys.stdin`,
510 :data:`sys.stdout` and :data:`sys.stderr` are now instances of
511 :class:`io.TextIOBase`. The builtin :func:`open` function is now an
512 alias for :func:`io.open` and has additional keyword arguments
513 *encoding*, *errors*, *newline* and *closefd*. Also note that an
514 invalid *mode* argument now raises :exc:`ValueError`, not
Guido van Rossum38287682008-12-03 02:03:19 +0000515 :exc:`IOError`. The binary file object underlying a text file
516 object can be accessed as :attr:`f.buffer` (but beware that the
517 text object maintains a buffer of itself in order to speed up
518 the encoding and decoding operations).
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000519
Guido van Rossum715287f2008-12-02 22:34:15 +0000520* :ref:`pep-3118`. The old builtin :func:`buffer` is now really gone;
521 the new builtin :func:`memoryview` provides (mostly) similar
522 functionality.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000523
Guido van Rossum715287f2008-12-02 22:34:15 +0000524* :ref:`pep-3119`. The :mod:`abc` module and the ABCs defined in the
Guido van Rossum38287682008-12-03 02:03:19 +0000525 :mod:`collections` module plays a somewhat more prominent role in
Guido van Rossum715287f2008-12-02 22:34:15 +0000526 the language now, and builtin collection types like :class:`dict`
527 and :class:`list` conform to the :class:`collections.MutableMapping`
Raymond Hettingerab4c51c2008-12-03 15:04:01 +0000528 and :class:`collections.MutableSequence` ABCs, respectively.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000529
Guido van Rossum715287f2008-12-02 22:34:15 +0000530* :ref:`pep-3127`. As mentioned above, the new octal literal
531 notation is the only one supported, and binary literals have been
532 added.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000533
Guido van Rossum38287682008-12-03 02:03:19 +0000534* :ref:`pep-3129`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000535
Guido van Rossum715287f2008-12-02 22:34:15 +0000536* :ref:`pep-3141`. The :mod:`numbers` module is another new use of
537 ABCs, defining Python's "numeric tower". Also note the new
Guido van Rossum38287682008-12-03 02:03:19 +0000538 :mod:`fractions` module which implements :class:`numbers.Rational`.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000539
540
541Library Changes
542===============
543
Guido van Rossumc46ee542008-12-02 23:46:46 +0000544Due to time constraints, this document does not exhaustively cover the
545very extensive changes to the standard library. :pep:`3108` is the
546reference for the major changes to the library. Here's a capsule
547review:
Guido van Rossum56076da2008-12-02 22:58:36 +0000548
Guido van Rossumc46ee542008-12-02 23:46:46 +0000549* Many old modules were removed. Some, like :mod:`gopherlib` (no
550 longer used) and :mod:`md5` (replaced by :mod:`hashlib`), were
551 already deprecated by :pep:`0004`. Others were removed as a result
552 of the removal of support for various platforms such as Irix, BeOS
553 and Mac OS 9 (see :pep:`0011`). Some modules were also selected for
554 removal in Python 3.0 due to lack of use or because a better
555 replacement exists. See :pep:`3108` for an exhaustive list.
Guido van Rossum5b78dd92008-12-02 17:31:14 +0000556
Guido van Rossumc46ee542008-12-02 23:46:46 +0000557* The :mod:`bsddb3` package was removed because its presence in the
558 core standard library has proved over time to be a particular burden
Guido van Rossum08388ef2008-12-03 05:39:28 +0000559 for the core developers due to testing instability and Berkeley DB's
Guido van Rossumc46ee542008-12-02 23:46:46 +0000560 release schedule. However, the package is alive and well,
561 externally maintained at http://www.jcea.es/programacion/pybsddb.htm.
562
563* Some modules were renamed because their old name flaunted
564 :pep:`0008`, or for various other reasons:
565
566 ======================= =======================
567 Old Name New Name
568 ======================= =======================
569 _winreg winreg
570 ConfigParser configparser
571 copy_reg copyreg
572 Queue queue
573 SocketServer socketserver
574 markupbase _markupbase
575 repr reprlib
576 test.test_support test.support
577 ======================= =======================
578
579* A common pattern in Python 2.x is to have one version of a module
580 implemented in pure Python, with an optional accelerated version
581 implemented as a C extension; for example, :mod:`pickle` and
582 :mod:`cPickle`. This places the burden of importing the accelerated
583 version and falling back on the pure Python version on each user of
584 these modules. In Python 3.0, the accelerated versions are
585 considered implementation details of the pure Python versions.
586 Users should always import the standard version, which attempts to
587 import the accelerated version and falls back to the pure Python
Guido van Rossumfedd1402008-12-03 04:15:35 +0000588 version. The :mod:`pickle` / :mod:`cPickle` pair received this
589 treatment. The :mod:`profile` module is on the list for 3.1. The
590 :mod:`StringIO` module has been turned into a class in the :mod:`io`
591 module.
Guido van Rossumc46ee542008-12-02 23:46:46 +0000592
593* Some related modules have been grouped into packages, and usually
594 the submodule names have been simplified. The resulting new
595 packages are:
596
597 * :mod:`dbm` (:mod:`anydbm`, :mod:`dbhash`, :mod:`dbm`,
598 :mod:`dumbdbm`, :mod:`gdbm`, :mod:`whichdb`).
599
600 * :mod:`html` (:mod:`HTMLParser`, :mod:`htmlentitydefs`).
601
602 * :mod:`http` (:mod:`httplib`, :mod:`BaseHTTPServer`,
603 :mod:`CGIHTTPServer`, :mod:`SimpleHTTPServer`, :mod:`Cookie`,
604 :mod:`cookielib`).
605
606 * :mod:`tkinter` (all :mod:`Tkinter`-related modules except
607 :mod:`turtle`). The target audience of :mod:`turtle` doesn't
608 really care about :mod:`tkinter`. Also note that as of Python
609 2.6, the functionality of :mod:`turtle` has been greatly enhanced.
610
611 * :mod:`urllib` (:mod:`urllib`, :mod:`urllib`2, :mod:`urlparse`,
612 :mod:`robotparse`).
613
614 * :mod:`xmlrpc` (:mod:`xmlrpclib`, :mod:`DocXMLRPCServer`,
615 :mod:`SimpleXMLRPCServer`).
Christian Heimes6e72b9e2008-12-03 13:39:03 +0000616
Guido van Rossum08388ef2008-12-03 05:39:28 +0000617Some other changes to standard library modules, not covered by
Guido van Rossumfedd1402008-12-03 04:15:35 +0000618:pep:`3108`:
Guido van Rossum715287f2008-12-02 22:34:15 +0000619
620* Killed :mod:`sets`. Use the builtin :func:`set` function.
621
Guido van Rossumc46ee542008-12-02 23:46:46 +0000622* Cleanup of the :mod:`sys` module: removed :func:`sys.exitfunc`,
623 :func:`sys.exc_clear`, :data:`sys.exc_type`, :data:`sys.exc_value`,
624 :data:`sys.exc_traceback`. (Note that :data:`sys.last_type`
Guido van Rossum715287f2008-12-02 22:34:15 +0000625 etc. remain.)
626
Guido van Rossumc46ee542008-12-02 23:46:46 +0000627* Cleanup of the :class:`array.array` type: the :meth:`read` and
628 :meth:`write` methods are gone; use :meth:`fromfile` and
629 :meth:`tofile` instead.
Guido van Rossum715287f2008-12-02 22:34:15 +0000630
Guido van Rossumc46ee542008-12-02 23:46:46 +0000631* Cleanup of the :mod:`operator` module: removed
632 :func:`sequenceIncludes` and :func:`isCallable`.
Guido van Rossum715287f2008-12-02 22:34:15 +0000633
Guido van Rossumc46ee542008-12-02 23:46:46 +0000634* Cleanup of the :mod:`thread` module: :func:`acquire_lock` and
635 :func:`release_lock` are gone; use :func:`acquire` and
636 :func:`release` instead.
Guido van Rossum715287f2008-12-02 22:34:15 +0000637
Guido van Rossumc46ee542008-12-02 23:46:46 +0000638* Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API.
Guido van Rossum715287f2008-12-02 22:34:15 +0000639
Guido van Rossumfedd1402008-12-03 04:15:35 +0000640* The :mod:`new` module is gone.
641
642* The functions :func:`os.tmpnam`, :func:`os.tempnam` and
643 :func:`os.tmpfile` have been removed in favor of the :mod:`tempfile`
644 module.
645
646* The :mod:`tokenize` module has been changed to work with bytes. The
647 main entry point is now :func:`tokenize.tokenize`, instead of
648 generate_tokens.
649
650* :data:`string.letters` and its friends (:data:`string.lowercase` and
651 :data:`string.uppercase`) are gone. Use
652 :data:`string.ascii_letters` etc. instead. (The reason for the
653 removal is that :data:string.letters` and friends had
654 locale-specific behavior, which is a bad idea for such
655 attractively-named global "constants".)
656
657* Renamed module :mod:`__builtin__` to :mod:`builtins` (removing the
658 underscores, adding an 's'). The :data:`__builtins__` variable
659 found in most global namespaces is unchanged. To modify a builtin,
660 you should use :mod:`builtins`, not :data:`__builtins__`!
661
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000662
Guido van Rossum715287f2008-12-02 22:34:15 +0000663:pep:`3101`: A New Approach To String Formatting
664================================================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000665
Guido van Rossum4a98a2a2008-11-21 18:35:43 +0000666* A new system for built-in string formatting operations replaces the
667 ``%`` string formatting operator. (However, the ``%`` operator is
668 still supported; it will be deprecated in Python 3.1 and removed
Guido van Rossum38287682008-12-03 02:03:19 +0000669 from the language at some later time.) Read :pep:`3101` for the full
670 scoop.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000671
672
Guido van Rossumfedd1402008-12-03 04:15:35 +0000673Changes To Exceptions
674=====================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000675
Guido van Rossumfedd1402008-12-03 04:15:35 +0000676The APIs for raising and catching exception have been cleaned up and
677new powerful features added:
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000678
Guido van Rossum715287f2008-12-02 22:34:15 +0000679* :pep:`0352`: All exceptions must be derived (directly or indirectly)
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000680 from :exc:`BaseException`. This is the root of the exception
Guido van Rossumfedd1402008-12-03 04:15:35 +0000681 hierarchy. This is not new as a recommendation, but the
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000682 *requirement* to inherit from :exc:`BaseException` is new. (Python
683 2.6 still allowed classic classes to be raised, and placed no
Guido van Rossumfedd1402008-12-03 04:15:35 +0000684 restriction on what you can catch.) As a consequence, string
685 exceptions are finally truly and utterly dead.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000686
Guido van Rossumfedd1402008-12-03 04:15:35 +0000687* Almost all exceptions should actually derive from :exc:`Exception`;
688 :exc:`BaseException` should only be used as a base class for
689 exceptions that should only be handled at the top level, such as
690 :exc:`SystemExit` or :exc:`KeyboardInterrupt`. The recommended
691 idiom for handling all exceptions except for this latter category is
692 to use :keyword:`except` :exc:`Exception`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000693
Guido van Rossumfedd1402008-12-03 04:15:35 +0000694* :exc:`StandardError` was removed (in 2.6 already).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000695
Guido van Rossumfedd1402008-12-03 04:15:35 +0000696* Exceptions no longer behave as sequences. Use the :attr:`args`
697 attribute instead.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000698
Guido van Rossumfedd1402008-12-03 04:15:35 +0000699* :pep:`3109`: Raising exceptions. You must now use :keyword:`raise`
700 *Exception*(*args*) instead of :keyword:`raise` *Exception*, *args*.
701 Additionally, you can no longer explicitly specify a traceback;
702 instead, if you *have* to do this, you can assign directly to the
703 :attr:`__traceback__` attribute (see below).
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000704
Guido van Rossumfedd1402008-12-03 04:15:35 +0000705* :pep:`3110`: Catching exceptions. You must now use
706 *:keyword:`except` SomeException* :keyword:`as` *variable* instead
707 *of :keyword:`except` *SomeException*, variable*. Moreover, the
708 *variable* is explicitly deleted when the :keyword:`except` block
709 is left.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000710
Guido van Rossumfedd1402008-12-03 04:15:35 +0000711* :pep:`3134`: Exception chaining. There are two cases: implicit
712 chaining and explicit chaining. Implicit chaining happens when an
713 exception is raised in an :keyword:`except` or :keyword:`finally`
714 handler block. This usually happens due to a bug in the handler
715 block; we call this a *secondary* exception. In this case, the
716 original exception (that was being handled) is saved as the
717 :attr:`__context__` attribute of the secondary exception.
718 Explicit chaining is invoked with this syntax::
719
720 raise SecondaryException() from primary_exception
721
722 (where *primary_exception* is any expression that produces an
723 exception object, probably an exception that was previously caught).
724 In this case, the primary exception is stored on the
725 :attr:`__cause__` attribute of the secondary exception. The
726 traceback printed when an unhandled exception occurs walks the chain
727 of :attr:`__cause__` and :attr:`__context__` attributes and prints a
728 separate traceback for each component of the chain, with the primary
729 exception at the top. (Java users may recognize this behavior. :-)
730
731* :pep:`3134`: Exception objects now store their traceback as the
732 :attr:`__traceback__` attribute. This means that an exception
733 object now contains all the information pertaining to an exception,
734 and there are fewer reasons to use :func:`sys.exc_info` (though the
735 latter is not removed).
736
737* A few exception messages are improved when Windows fails to load an
738 extension module. For example, ``error code 193`` is now ``%1 is
739 not a valid Win32 application``. Strings now deal with non-English
740 locales.
Georg Brandl396ef802008-02-02 10:30:18 +0000741
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000742
Guido van Rossumfedd1402008-12-03 04:15:35 +0000743Miscellaneous Other Changes
744===========================
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000745
Guido van Rossumfedd1402008-12-03 04:15:35 +0000746Operators And Special Methods
747-----------------------------
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000748
Georg Brandl396ef802008-02-02 10:30:18 +0000749* ``!=`` now returns the opposite of ``==``, unless ``==`` returns
Guido van Rossumfedd1402008-12-03 04:15:35 +0000750 :data:`NotImplemented`.
Georg Brandl396ef802008-02-02 10:30:18 +0000751
Guido van Rossumfedd1402008-12-03 04:15:35 +0000752* The concept of "unbound methods" has been removed from the language.
Guido van Rossum715287f2008-12-02 22:34:15 +0000753 When referencing a method as a class attribute, you now get a plain
754 function object.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000755
Guido van Rossum715287f2008-12-02 22:34:15 +0000756* :meth:`__getslice__`, :meth:`__setslice__` and :meth:`__delslice__`
757 were killed. The syntax ``a[i:j]`` now translates to
758 ``a.__getitem__(slice(i, j))`` (or :meth:`__setitem__` or
759 :meth:`__delitem__`, when used as an assignment or deletion target,
760 respectively).
Georg Brandl396ef802008-02-02 10:30:18 +0000761
Guido van Rossumfedd1402008-12-03 04:15:35 +0000762* :pep:`3114`: the standard :meth:`next` method has been renamed to
763 :meth:`__next__`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000764
Guido van Rossumfedd1402008-12-03 04:15:35 +0000765* The :meth:`__oct__` and :meth:`__hex__` special methods are removed
766 -- :func:`oct` and :func:`hex` use :meth:`__index__` now to convert
767 the argument to an integer.
768
769* Removed support for :attr:`__members__` and :attr:`__methods__`.
770
771* The function attributes named :attr:`func_X` have been renamed to
772 use the :data:`__X__` form, freeing up these names in the function
773 attribute namespace for user-defined attributes. To wit,
774 :attr:`func_closure`, :attr:`func_code`, :attr:`func_defaults`,
775 :attr:`func_dict`, :attr:`func_doc`, :attr:`func_globals`,
776 :attr:`func_name` were renamed to :attr:`__closure__`,
777 :attr:`__code__`, :attr:`__defaults__`, :attr:`__dict__`,
778 :attr:`__doc__`, :attr:`__globals__`, :attr:`__name__`,
779 respectively.
780
781* :meth:`__nonzero__` is now :meth:`__bool__`.
782
783Builtins
784--------
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000785
Guido van Rossum715287f2008-12-02 22:34:15 +0000786* :pep:`3135`: New :func:`super`. You can now invoke :func:`super`
Guido van Rossumfedd1402008-12-03 04:15:35 +0000787 without arguments and (assuming this is in a regular instance method
788 defined inside a :keyword:`class` statement) the right class and
789 instance will automatically be chosen. With arguments, the behavior
790 of :func:`super` is unchanged.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000791
Guido van Rossumfedd1402008-12-03 04:15:35 +0000792* :pep:`3111`: :func:`raw_input` was renamed to :func:`input`. That
793 is, the new :func:`input` function reads a line from
794 :data:`sys.stdin` and returns it with the trailing newline stripped.
795 It raises :exc:`EOFError` if the input is terminated prematurely.
796 To get the old behavior of :func:`input`, use ``eval(input())``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000797
Guido van Rossumfedd1402008-12-03 04:15:35 +0000798* A new builtin :func:`next` was added to call the :meth:`__next__`
799 method on an object.
800
801* Moved :func:`intern` to :func:`sys.intern`.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000802
Guido van Rossum715287f2008-12-02 22:34:15 +0000803* Removed: :func:`apply`. Instead of ``apply(f, args)`` use
804 ``f(*args)``.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000805
Guido van Rossum715287f2008-12-02 22:34:15 +0000806* Removed :func:`callable`. Instead of ``callable(f)`` you can use
807 ``hasattr(f, '__call__')``. The :func:`operator.isCallable` function
808 is also gone.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000809
Guido van Rossum715287f2008-12-02 22:34:15 +0000810* Removed :func:`coerce`. This function no longer serves a purpose
811 now that classic classes are gone.
Guido van Rossumb197f3c2007-08-31 00:37:00 +0000812
Guido van Rossum715287f2008-12-02 22:34:15 +0000813* Removed :func:`execfile`. Instead of ``execfile(fn)`` use
814 ``exec(open(fn).read())``.
Georg Brandl396ef802008-02-02 10:30:18 +0000815
Guido van Rossum715287f2008-12-02 22:34:15 +0000816* Removed :class:`file`. Use :func:`open`.
Georg Brandl396ef802008-02-02 10:30:18 +0000817
Guido van Rossum715287f2008-12-02 22:34:15 +0000818* Removed :func:`reduce`. Use :func:`functools.reduce` if you really
819 need it; however, 99 percent of the time an explicit :keyword:`for`
820 loop is more readable.
Georg Brandl396ef802008-02-02 10:30:18 +0000821
Guido van Rossum715287f2008-12-02 22:34:15 +0000822* Removed :func:`reload`. Use :func:`imp.reload`.
823
824* Removed. :meth:`dict.has_key` -- use the :keyword:`in` operator
825 instead.
826
Guido van Rossumfedd1402008-12-03 04:15:35 +0000827.. ======================================================================
Guido van Rossum715287f2008-12-02 22:34:15 +0000828
Guido van Rossumfedd1402008-12-03 04:15:35 +0000829
830Build and C API Changes
831=======================
832
833Due to time constraints, here is a *very* incomplete list of changes
834to the C API.
835
836* Support for several platforms was dropped, including but not limited
837 to Mac OS 9, BeOS, RISCOS, Irix, and Tru64.
838
839* :pep:`3118`: New Buffer API.
840
841* :pep:`3121`: Extension Module Initialization & Finalization.
842
843* :pep:`3123`: Making :cmacro:`PyObject_HEAD` conform to standard C.
844
845* No more C API support for restricted execution.
846
847* :cfunc:`PyNumber_Coerce`, :cfunc:`PyNumber_CoerceEx`,
848 :cfunc:`PyMember_Get`, and :cfunc:`PyMember_Set` C APIs are removed.
849
850* New C API :cfunc:`PyImport_ImportModuleNoBlock`, works like
851 :cfunc:`PyImport_ImportModule` but won't block on the import lock
852 (returning an error instead).
Guido van Rossum715287f2008-12-02 22:34:15 +0000853
854* Renamed the boolean conversion C-level slot and method:
Guido van Rossumfedd1402008-12-03 04:15:35 +0000855 ``nb_nonzero`` is now ``nb_bool``.
Guido van Rossum715287f2008-12-02 22:34:15 +0000856
Guido van Rossum08388ef2008-12-03 05:39:28 +0000857* Removed :cmacro:`METH_OLDARGS` and :cmacro:`WITH_CYCLE_GC` from the C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000858
Georg Brandl5a165582007-08-31 06:15:01 +0000859.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000860
861
Guido van Rossumfedd1402008-12-03 04:15:35 +0000862Performance
863===========
Georg Brandl116aa622007-08-15 14:28:22 +0000864
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000865The net result of the 3.0 generalizations is that Python 3.0 runs the
Guido van Rossum715287f2008-12-02 22:34:15 +0000866pystone benchmark around 10% slower than Python 2.5. Most likely the
867biggest cause is the removal of special-casing for small integers.
868There's room for improvement, but it will happen after 3.0 is
869released!
Georg Brandl116aa622007-08-15 14:28:22 +0000870
Georg Brandl5a165582007-08-31 06:15:01 +0000871.. ======================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000872
873
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000874Porting To Python 3.0
Georg Brandl116aa622007-08-15 14:28:22 +0000875=====================
876
Guido van Rossum56076da2008-12-02 22:58:36 +0000877For porting existing Python 2.5 or 2.6 source code to Python 3.0, the
878best strategy is the following:
Georg Brandl116aa622007-08-15 14:28:22 +0000879
Guido van Rossum56076da2008-12-02 22:58:36 +00008800. (Prerequisite:) Start with excellent test coverage.
Georg Brandl116aa622007-08-15 14:28:22 +0000881
Guido van Rossum56076da2008-12-02 22:58:36 +00008821. Port to Python 2.6. This should be no more work than the average
883 port from Python 2.x to Python 2.(x+1). Make sure all your tests
884 pass.
Christian Heimesf78b1c62007-12-02 16:52:32 +0000885
Guido van Rossum56076da2008-12-02 22:58:36 +00008862. (Still using 2.6:) Turn on the :option:`-3` command line switch.
887 This enables warnings about features that will be removed (or
888 change) in 3.0. Run your test suite again, and fix code that you
889 get warnings about until there are no warnings left, and all your
890 tests still pass.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000891
Guido van Rossum56076da2008-12-02 22:58:36 +00008923. Run the ``2to3`` source-to-source translator over your source code
893 tree. (See :ref:`2to3-reference` for more on this tool.) Run the
894 result of the translation under Python 3.0. Manually fix up any
895 remaining issues, fixing problems until all tests pass again.
896
897It is not recommended to try to write source code that runs unchanged
898under both Python 2.6 and 3.0; you'd have to use a very contorted
899coding style, e.g. avoiding :keyword:`print` statements, metaclasses,
900and much more. If you are maintaining a library that needs to support
901both Python 2.6 and Python 3.0, the best approach is to modify step 3
902above by editing the 2.6 version of the source code and running the
903``2to3`` translator again, rather than editing the 3.0 version of the
904source code.
905
906For porting C extensions to Python 3.0, please see :ref:`cporting-howto`.
Guido van Rossumeb3d8d42008-12-02 00:56:25 +0000907
Georg Brandl5a165582007-08-31 06:15:01 +0000908.. ======================================================================