Differences between revisions 16 and 17
Revision 16 as of 2004-08-22 23:03:04
Size: 3975
Editor: pcp07842301pcs
Comment:
Revision 17 as of 2004-08-23 18:06:40
Size: 4024
Comment: Mention that PEP is now written.
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
This page has been consolidated into PEP 3000; the PEP is more up-to-date
and is actively maintained. [[#e 5]]
Line 4: Line 6:

This will eventually be consolidated into PEP 3000. [[#e 5]]

This page lists features that GvR has mentioned as goals for Python 3.0. This page has been consolidated into PEP 3000; the PEP is more up-to-date and is actively maintained. #e 5

(Another list is at PythonThreeDotOh, but it incorporates items that GvR has never talked about.)

Core Language Changes

  • Remove distinction between int and long types. #a 4

  • Make all strings unicode, and have a separate bytes type. #a 2 #a 4

  • Replace all old-style classes. #a 4

  • Make the exec statement a function (again.) #a 1

  • Make the print statement a function. (write(x,y,z), writeln(x,y,z)) #a 1

  • Do something so you can catch multiple exceptions using except E1, E2, E3:. Perhaps use except E1, E2, E3 as err: if you want the error variable. (Added by GvR, suggested by Bram Cohen.)

  • Add a with statement:

    with self:
        .foo = [1, 2, 3]
        .bar(4, .foo)
  • Remove `x`. #a 1

    • Alternatively: use repr(x). Reasoning: backticks are hard to read in many fonts and can be mangled by typesetting software.

  • Remove the lambda statement. #a 1 #a 4

    • Alternatively: use a local function.

      Reasoning: lambda supports only one statement.

  • Remove support for string exceptions. #a 1

    • Alternatively: use a class.
  • Perhaps have optional declarations for static typing.

Built-In Changes

  • Have range(), zip(), dict.keys(), dict.items(), and dict.values() return iterators.

  • Move compile(), intern() and id() to the sys module. #a 1

  • Change max() and min() to consume iterators.

  • Remove dict.iteritems(), dict.iterkeys(), and dict.itervalues().

    • Alternatively: use dict.items(), dict.keys(), and dict.values() respectively.

  • Remove apply(). #a 1

    • Alternatively: use f(*args, **kw).

  • Remove xrange(). #a 1 #a 4

    • Alternatively: use range().

  • Remove map() and filter(). #a 1 #a 4

    • Alternatively: use list comprehensions.
  • Remove coerce() as it is obsolete. #a 1

  • Remove reduce(). #a 1

    • Alternatively: use a loop.
  • Remove callable(). #a 1

    • Alternatively: catch the exception.
  • Remove buffer(). #a 1 #a 2

    • Alternatively: use new bytes type.

  • Remove raw_input(). #a 1

    • Alternatively: use sys.stdin.readline().

  • Remove input(). #a 1

    • Alternatively: use eval(sys.stdin.readline()).

  • Remove execfile() and reload(). #a 1

    • Alternatively: use exec().

Standard Library Changes

  • Remove string module. #c 4

    • Alternatively: use string methods.
  • Remove other deprecated modules. #c 3

  • Remove sys.exc_type. #a 1

    • Alternatively: use sys.exc_info. Reasoning: it is not thread safe.

Unresolved Issues

  • L += x and L.extend(x) are equivalent.

  • Can the order of parameter of the insert method be changed so the the index parameter is optional and list.append can be removed?

  • What is the status of the <> operator? Answer: it's dead. (GvR)

References

Python3.0 (last edited 2011-04-08 16:42:51 by ip-109-90-196-137)

Unable to edit the page? See the FrontPage for instructions.