This page lists features that Guido van Rossum himself has mentioned as goals for Python 3.0. Parts of this page have been consolidated into PEP 3000 [5]
Status
Python 3.0 is currently (2008-07-12) in beta testing, and has much accumulated documentation. More official sources of information include:
The development version of the Python 3.0 documentation: http://docs.python.org/dev/3.0/
- PEPs covering changes for Python 3.0:
PEP 3000, "Python 3000": http://www.python.org/dev/peps/pep-3000/
PEP 3100, "Miscellaneous Python 3.0 Plans": http://www.python.org/dev/peps/pep-3100/
PEP 3099, "Things that will Not Change in Python 3000": http://www.python.org/dev/peps/pep-3099/
PEP 3108, "Standard Library Reorganization": http://www.python.org/dev/peps/pep-3108/
Unfortunately there does not appear to be a well-maintained single point of entry for someone to find all relevant changes that will occur in Python 3.0.
Core Language Changes
Remove distinction between int and long types. [4]
Make true division the default behavior. [4]
Make all strings unicode [4], and have a separate bytes [2] type. [13]
Make the exec statement a function again. [1]
Remove old-style classes. [4]
Replace the print statement with a function or functions. (e.g. write(x, y, z), writeline(x, y, z)) [1] [21]
Make as a real keyword. [7]
Add an attribute to exceptions for storing the traceback. [22]
Remove raise Exception, 'message' syntax in favor of raise Exception('message'). [11] [20]
Require that the first statement of a suite be on its own line. [1]
Make True and False keywords. [6]
- Reason: make assignment to them impossible.
Raise an exception when making comparisons (other than equality and inequality) between two incongruent types. [24]
- Reason: such comparisons do not make sense and are especially confusing to new users of Python.
Require that all exceptions inherit a common base class. [9]
- Reason: forces the use of classes as objects raised by exceptions and simplifies the implementation.
Make the traceback a standard attribute of Exception instances [18]
- Reason: inconvenient to pass the (type, value, traceback) triple that currently represents an exception around.
Remove `x`. [1]
Instead: use repr(x).
- Reason: backticks are hard to read in many fonts and can be mangled by typesetting software.
Remove the <> operator.
Instead: use !=.
Remove support for string exceptions. [1]
- Instead: use a class.
Add a mechanism so that multiple exceptions can be caught using except E1, E2, E3:. For instance:
(Added by GvR, suggested by Bram Cohen.)JimD's suggested syntax:
1 except (E1, E2, E3),
