• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1****************************
2  What's New In Python 3.0
3****************************
4
5.. XXX Add trademark info for Apple, Microsoft.
6
7:Author: Guido van Rossum
8
9.. $Id$
10   Rules for maintenance:
11
12   * 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.
15
16   * The maintainer will go through Misc/NEWS periodically and add
17   changes; it's therefore more important to add your changes to
18   Misc/NEWS than to this file.  (Note: I didn't get to this for 3.0.
19   GvR.)
20
21   * 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.)
26
27   * 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.
30
31   * 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.
35
36   * You can comment out your additions if you like, but it's not
37   necessary (especially when a final release is some months away).
38
39   * Credit the author of a patch or bugfix.   Just the name is
40   sufficient; the e-mail address isn't necessary.  (Due to time
41   constraints I haven't managed to do this for 3.0.  GvR.)
42
43   * It's helpful to add the bug/patch number as a comment:
44
45   % Patch 12345
46   XXX Describe the transmogrify() function added to the socket
47   module.
48   (Contributed by P.Y. Developer.)
49
50   This saves the maintainer the effort of going through the SVN log
51   when researching a change.  (Again, I didn't get to this for 3.0.
52   GvR.)
53
54This article explains the new features in Python 3.0, compared to 2.6.
55Python 3.0, also known as "Python 3000" or "Py3K", is the first ever
56*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.
62
63This article doesn't attempt to provide a complete specification of
64all 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.
76
77.. Compare with previous release in 2 - 3 sentences here.
78.. add hyperlink when the documentation becomes available online.
79
80.. ======================================================================
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.. ======================================================================
86
87
88Common Stumbling Blocks
89=======================
90
91This section lists those few changes that are most likely to trip you
92up if you're used to Python 2.5.
93
94Print Is A Function
95-------------------
96
97The ``print`` statement has been replaced with a :func:`print`
98function, with keyword arguments to replace most of the special syntax
99of the old ``print`` statement (:pep:`3105`).  Examples::
100
101  Old: print "The answer is", 2*2
102  New: print("The answer is", 2*2)
103
104  Old: print x,           # Trailing comma suppresses newline
105  New: print(x, end=" ")  # Appends a space instead of a newline
106
107  Old: print              # Prints a newline
108  New: print()            # You must call the function!
109
110  Old: print >>sys.stderr, "fatal error"
111  New: print("fatal error", file=sys.stderr)
112
113  Old: print (x, y)       # prints repr((x, y))
114  New: print((x, y))      # Not the same as print(x, y)!
115
116You can also customize the separator between items, e.g.::
117
118  print("There are <", 2**32, "> possibilities!", sep="")
119
120which produces:
121
122.. code-block:: none
123
124  There are <4294967296> possibilities!
125
126Note:
127
128* The :func:`print` function doesn't support the "softspace" feature of
129  the old ``print`` statement.  For example, in Python 2.x,
130  ``print "A\n", "B"`` would write ``"A\nB\n"``; but in Python 3.0,
131  ``print("A\n", "B")`` writes ``"A\n B\n"``.
132
133* 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!
136
137* When using the ``2to3`` source-to-source conversion tool, all
138  ``print`` statements are automatically converted to
139  :func:`print` function calls, so this is mostly a non-issue for
140  larger projects.
141
142Views And Iterators Instead Of Lists
143-------------------------------------
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 =
150  sorted(d)`` instead (this works in Python 2.5 too and is just
151  as efficient).
152
153* Also, the :meth:`dict.iterkeys`, :meth:`dict.iteritems` and
154  :meth:`dict.itervalues` methods are no longer supported.
155
156* :func:`map` and :func:`filter` return iterators.  If you really need
157  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
160  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).
166
167  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
169  compatibility with :func:`map` from Python 2.x, also wrap the sequences in
170  :func:`itertools.zip_longest`, e.g. ``map(func, *sequences)`` becomes
171  ``list(map(func, itertools.zip_longest(*sequences)))``.
172
173* :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.
176
177* :func:`zip` now returns an iterator.
178
179Ordering 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
187  > None`` or ``len <= len`` are no longer valid, and e.g. ``None <
188  None`` raises :exc:`TypeError` instead of returning
189  ``False``.  A corollary is that sorting a heterogeneous list
190  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
193  unequal to each other.
194
195* :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".
199
200* 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)``.)
205
206Integers
207--------
208
209* :pep:`237`: Essentially, :class:`long` renamed to :class:`int`.
210  That is, there is only one built-in integral type, named
211  :class:`int`; but it behaves mostly like the old :class:`long` type.
212
213* :pep:`238`: An expression like ``1/2`` returns a float.  Use
214  ``1//2`` to get the truncating behavior.  (The latter syntax has
215  existed for years, at least since Python 2.2.)
216
217* The :data:`sys.maxint` constant was removed, since there is no
218  longer a limit to the value of integers.  However, :data:`sys.maxsize`
219  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).
223
224* 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.
230
231Text 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
243  :exc:`TypeError`, whereas if you were to mix Unicode and 8-bit
244  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
246  :exc:`UnicodeDecodeError` if it contained non-ASCII values.  This
247  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
281* The built-in :class:`basestring` abstract type was removed.  Use
282  :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
304* 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
310* 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`
319  instance, and :func:`os.getcwdb` returns the current working
320  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
346
347Overview Of Syntax Changes
348==========================
349
350This section gives a brief overview of every *syntactic* change in
351Python 3.0.
352
353New Syntax
354----------
355
356* :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.
362
363* :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.
368
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
371  a metaclass (see next section), but can be used for other purposes
372  as well, as long as the metaclass supports it.
373
374* :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.
377
378* :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::
382
383    (a, *rest, b) = range(5)
384
385  This sets *a* to ``0``, *b* to ``4``, and *rest* to ``[1, 2, 3]``.
386
387* Dictionary comprehensions: ``{k: v for k, v in stuff}`` means the
388  same thing as ``dict(stuff)`` but is more flexible.  (This is
389  :pep:`274` vindicated. :-)
390
391* Set literals, e.g. ``{1, 2}``.  Note that ``{}`` is an empty
392  dictionary; use ``set()`` for an empty set.  Set comprehensions are
393  also supported; e.g., ``{x for x in stuff}`` means the same thing as
394  ``set(stuff)`` but is more flexible.
395
396* New octal literals, e.g. ``0o720`` (already in 2.6).  The old octal
397  literals (``0720``) are gone.
398
399* New binary literals, e.g. ``0b1010`` (already in 2.6), and
400  there is a new corresponding built-in function, :func:`bin`.
401
402* Bytes literals are introduced with a leading ``b`` or ``B``, and
403  there is a new corresponding built-in function, :func:`bytes`.
404
405Changed Syntax
406--------------
407
408* :pep:`3109` and :pep:`3134`: new :keyword:`raise` statement syntax:
409  :samp:`raise [{expr} [from {expr}]]`.  See below.
410
411* :keyword:`!as` and :keyword:`with` are now reserved words.  (Since
412  2.6, actually.)
413
414* ``True``, ``False``, and ``None`` are reserved words.  (2.6 partially enforced
415  the restrictions on ``None`` already.)
416
417* Change from :keyword:`except` *exc*, *var* to
418  :keyword:`!except` *exc* :keyword:`!as` *var*.  See :pep:`3110`.
419
420* :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
436* List comprehensions no longer support the syntactic form
437  :samp:`[... for {var} in {item1}, {item2}, ...]`.  Use
438  :samp:`[... for {var} in ({item1}, {item2}, ...)]` instead.
439  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.
443
444* 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.)
448
449Removed Syntax
450--------------
451
452* :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.
455
456* Removed backticks (use :func:`repr` instead).
457
458* Removed ``<>`` (use ``!=`` instead).
459
460* Removed keyword: :func:`exec` is no longer a keyword; it remains as
461  a function.  (Fortunately the function syntax was also accepted in
462  2.x.)  Also note that :func:`exec` no longer takes a stream argument;
463  instead of ``exec(f)`` you can use ``exec(f.read())``.
464
465* Integer literals no longer support a trailing ``l`` or ``L``.
466
467* String literals no longer support a leading ``u`` or ``U``.
468
469* The :keyword:`from` *module* :keyword:`import` ``*`` syntax is only
470  allowed at the module level, no longer inside functions.
471
472* The only acceptable syntax for relative imports is :samp:`from .[{module}]
473  import {name}`.  All :keyword:`import` forms not starting with ``.`` are
474  interpreted as absolute imports.  (:pep:`328`)
475
476* Classic classes are gone.
477
478
479Changes Already Present In Python 2.6
480=====================================
481
482Since 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
486consulted for longer descriptions.
487
488* :ref:`pep-0343`.  The :keyword:`with` statement is now a standard
489  feature and no longer needs to be imported from the :mod:`__future__`.
490  Also check out :ref:`new-26-context-managers` and
491  :ref:`new-module-contextlib`.
492
493* :ref:`pep-0366`.  This enhances the usefulness of the :option:`-m`
494  option when the referenced module lives in a package.
495
496* :ref:`pep-0370`.
497
498* :ref:`pep-0371`.
499
500* :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.
506
507* :ref:`pep-3105`.  This is now a standard feature and no longer needs
508  to be imported from :mod:`__future__`.  More details were given above.
509
510* :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.)
514
515* :ref:`pep-3112`.  The ``b"..."`` string literal notation (and its
516  variants like ``b'...'``, ``b"""..."""``, and ``br"..."``) now
517  produces a literal of type :class:`bytes`.
518
519* :ref:`pep-3116`.  The :mod:`io` module is now the standard way of
520  doing file I/O.  The built-in :func:`open` function is now an
521  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
524  :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).
528
529* :ref:`pep-3118`.  The old builtin :func:`buffer` is now really gone;
530  the new builtin :func:`memoryview` provides (mostly) similar
531  functionality.
532
533* :ref:`pep-3119`.  The :mod:`abc` module and the ABCs defined in the
534  :mod:`collections` module plays a somewhat more prominent role in
535  the language now, and built-in collection types like :class:`dict`
536  and :class:`list` conform to the :class:`collections.MutableMapping`
537  and :class:`collections.MutableSequence` ABCs, respectively.
538
539* :ref:`pep-3127`.  As mentioned above, the new octal literal
540  notation is the only one supported, and binary literals have been
541  added.
542
543* :ref:`pep-3129`.
544
545* :ref:`pep-3141`.  The :mod:`numbers` module is another new use of
546  ABCs, defining Python's "numeric tower".  Also note the new
547  :mod:`fractions` module which implements :class:`numbers.Rational`.
548
549
550Library Changes
551===============
552
553Due 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:
557
558* Many old modules were removed.  Some, like :mod:`gopherlib` (no
559  longer used) and :mod:`md5` (replaced by :mod:`hashlib`), were
560  already deprecated by :pep:`4`.  Others were removed as a result
561  of the removal of support for various platforms such as Irix, BeOS
562  and Mac OS 9 (see :pep:`11`).  Some modules were also selected for
563  removal in Python 3.0 due to lack of use or because a better
564  replacement exists.  See :pep:`3108` for an exhaustive list.
565
566* The :mod:`bsddb3` package was removed because its presence in the
567  core standard library has proved over time to be a particular burden
568  for the core developers due to testing instability and Berkeley DB's
569  release schedule.  However, the package is alive and well,
570  externally maintained at https://www.jcea.es/programacion/pybsddb.htm.
571
572* Some modules were renamed because their old name disobeyed
573  :pep:`8`, or for various other reasons.  Here's the list:
574
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
597  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.
601
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
620  * :mod:`urllib` (:mod:`urllib`, :mod:`urllib2`, :mod:`urlparse`,
621    :mod:`robotparse`).
622
623  * :mod:`xmlrpc` (:mod:`xmlrpclib`, :mod:`DocXMLRPCServer`,
624    :mod:`SimpleXMLRPCServer`).
625
626Some other changes to standard library modules, not covered by
627:pep:`3108`:
628
629* Killed :mod:`sets`.  Use the built-in :func:`set` class.
630
631* 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`
634  etc. remain.)
635
636* Cleanup of the :class:`array.array` type: the :meth:`read` and
637  :meth:`write` methods are gone; use :meth:`fromfile` and
638  :meth:`tofile` instead.  Also, the ``'c'`` typecode for array is
639  gone -- use either ``'b'`` for bytes or ``'u'`` for Unicode
640  characters.
641
642* Cleanup of the :mod:`operator` module: removed
643  :func:`sequenceIncludes` and :func:`isCallable`.
644
645* Cleanup of the :mod:`thread` module: :func:`acquire_lock` and
646  :func:`release_lock` are gone; use :func:`acquire` and
647  :func:`release` instead.
648
649* Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API.
650
651* 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
664  removal is that :data:`string.letters` and friends had
665  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
673
674:pep:`3101`: A New Approach To String Formatting
675================================================
676
677* 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
680  from the language at some later time.)  Read :pep:`3101` for the full
681  scoop.
682
683
684Changes To Exceptions
685=====================
686
687The APIs for raising and catching exception have been cleaned up and
688new powerful features added:
689
690* :pep:`352`: All exceptions must be derived (directly or indirectly)
691  from :exc:`BaseException`.  This is the root of the exception
692  hierarchy.  This is not new as a recommendation, but the
693  *requirement* to inherit from :exc:`BaseException` is new.  (Python
694  2.6 still allowed classic classes to be raised, and placed no
695  restriction on what you can catch.)  As a consequence, string
696  exceptions are finally truly and utterly dead.
697
698* 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`.
704
705* :exc:`StandardError` was removed.
706
707* Exceptions no longer behave as sequences.  Use the :attr:`args`
708  attribute instead.
709
710* :pep:`3109`: Raising exceptions.  You must now use :samp:`raise
711  {Exception}({args})` instead of :samp:`raise {Exception}, {args}`.
712  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).
715
716* :pep:`3110`: Catching exceptions.  You must now use
717  :samp:`except {SomeException} as {variable}` instead
718  of :samp:`except {SomeException}, {variable}`.  Moreover, the
719  *variable* is explicitly deleted when the :keyword:`except` block
720  is left.
721
722* :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
740  exception at the top.  (Java users may recognize this behavior.)
741
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.
752
753
754Miscellaneous Other Changes
755===========================
756
757Operators And Special Methods
758-----------------------------
759
760* ``!=`` now returns the opposite of ``==``, unless ``==`` returns
761  :data:`NotImplemented`.
762
763* The concept of "unbound methods" has been removed from the language.
764  When referencing a method as a class attribute, you now get a plain
765  function object.
766
767* :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).
772
773* :pep:`3114`: the standard :meth:`next` method has been renamed to
774  :meth:`~iterator.__next__`.
775
776* 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__`,
788  :attr:`__code__`, :attr:`__defaults__`, :attr:`~object.__dict__`,
789  :attr:`__doc__`, :attr:`__globals__`, :attr:`~definition.__name__`,
790  respectively.
791
792* :meth:`__nonzero__` is now :meth:`__bool__`.
793
794Builtins
795--------
796
797* :pep:`3135`: New :func:`super`.  You can now invoke :func:`super`
798  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.
802
803* :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())``.
808
809* A new built-in function :func:`next` was added to call the
810  :meth:`~iterator.__next__` method on an object.
811
812* 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
815  returns ``2`` rather than ``3``.)  ``round(x[, n])`` now
816  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
821* Moved :func:`intern` to :func:`sys.intern`.
822
823* Removed: :func:`apply`.  Instead of ``apply(f, args)`` use
824  ``f(*args)``.
825
826* Removed :func:`callable`.  Instead of ``callable(f)`` you can use
827  ``isinstance(f, collections.Callable)``.  The :func:`operator.isCallable`
828  function is also gone.
829
830* Removed :func:`coerce`.  This function no longer serves a purpose
831  now that classic classes are gone.
832
833* Removed :func:`execfile`.  Instead of ``execfile(fn)`` use
834  ``exec(open(fn).read())``.
835
836* 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.
838
839* 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.
842
843* Removed :func:`reload`.  Use :func:`imp.reload`.
844
845* Removed. :meth:`dict.has_key` -- use the :keyword:`in` operator
846  instead.
847
848.. ======================================================================
849
850
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
864* :pep:`3123`: Making :c:macro:`PyObject_HEAD` conform to standard C.
865
866* No more C API support for restricted execution.
867
868* :c:func:`PyNumber_Coerce`, :c:func:`PyNumber_CoerceEx`,
869  :c:func:`PyMember_Get`, and :c:func:`PyMember_Set` C APIs are removed.
870
871* New C API :c:func:`PyImport_ImportModuleNoBlock`, works like
872  :c:func:`PyImport_ImportModule` but won't block on the import lock
873  (returning an error instead).
874
875* Renamed the boolean conversion C-level slot and method:
876  ``nb_nonzero`` is now ``nb_bool``.
877
878* Removed :c:macro:`METH_OLDARGS` and :c:macro:`WITH_CYCLE_GC` from the C API.
879
880.. ======================================================================
881
882
883Performance
884===========
885
886The net result of the 3.0 generalizations is that Python 3.0 runs the
887pystone 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!
891
892.. ======================================================================
893
894
895Porting To Python 3.0
896=====================
897
898For porting existing Python 2.5 or 2.6 source code to Python 3.0, the
899best strategy is the following:
900
9010. (Prerequisite:) Start with excellent test coverage.
902
9031. 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.
906
9072. (Still using 2.6:) Turn on the :option:`!-3` command line switch.
908   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.
912
9133. 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
920coding style, e.g. avoiding ``print`` statements, metaclasses,
921and 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`.
928
929.. ======================================================================
930