What’s New In Python 3.8

Date:February 21, 2018

This article explains the new features in Python 3.8, compared to 3.7.

For full details, see the Misc/NEWS file.


Prerelease users should be aware that this document is currently in draft form. It will be updated substantially as Python 3.8 moves towards release, so it’s worth checking back even after reading earlier versions.

Summary – Release highlights

New Features

Other Language Changes

New Modules

  • None yet.

Improved Modules


Build and C API Changes



Porting to Python 3.8

This section lists previously described changes and other bugfixes that may require changes to your code.

Changes in Python behavior

  • Yield expressions (both yield and yield from clauses) are now disallowed in comprehensions and generator expressions (aside from the iterable expression in the leftmost for clause). (Contributed by Serhiy Storchaka in bpo-10544.)

Changes in the Python API

  • The selection() method of the tkinter.ttk.Treeview class no longer takes arguments. Using it with arguments for changing the selection was deprecated in Python 3.6. Use specialized methods like selection_set() for changing the selection. (Contributed by Serhiy Storchaka in bpo-31508.)
  • A dbm.dumb database opened with flags 'r' is now read-only. dbm.dumb.open() with flags 'r' and 'w' no longer creates a database if it does not exist. (Contributed by Serhiy Storchaka in bpo-32749.)