Now Reading
Python 3.9 Released; Check The New Features

Python 3.9 Released; Check The New Features

It was announced last year that Python will be making significant changes and will be adding new features with the release of their 3.9 version. Back then, it was speculated that the new version would flaunt new features in security, core and builtins, libraries, documentation, and more. 

Yesterday, Python announced new features as part of their 3.9 in beta version((3.9.0b3). Let’s take a look at few highlights:

Follow us on Google News>>

Merging Gets Better

The current ways to merge two dicts in Python have several disadvantages:


d1.update(d2) modifies d1 in-place. e = d1.copy(); e.update(d2) is not an expression and needs a temporary variable.

Looking for a job change? Let us help you.

{**d1, **d2}

Dict unpacking looks ugly and is not easily discoverable. Few people would be able to guess what it means the first time they see it, or think of it as the “obvious way” to merge two dicts.

“…if you were to ask a typical Python user how to combine two dicts into a new one, I doubt many people would think of {**d1, **d2}. I know I myself had forgotten about it when this thread started!”

Guido Van Rossum, Python creator

Now in 3.9, Merge (|) and update (|=) operators have been added to the built-in dict class. Here’s how it works:

>>> d = {'spam': 1, 'eggs': 2, 'cheese': 3}

>>> e = {'cheese': 'cheddar', 'aardvark': 'Ethel'}

>>> d | e

{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}

>>> e | d

{'aardvark': 'Ethel', 'spam': 1, 'eggs': 2, 'cheese': 3}

The augmented assignment version operates in-place:

>>> d |= e

>>> d

{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}

New String Methods

str.removeprefix(prefix) and str.removesuffix(suffix) have been added to easily remove an unneeded prefix or a suffix from a string. 

if test_func_name.startswith("test_"):





Built-in Gets Generic

Static typing was built incrementally on top of the existing Python runtime and constrained by existing syntax and runtime behavior. This led to the existence of a duplicated collection. For example typing.List and the built-in list.

The new release enables support for the generics syntax in all standard collections currently available in the typing module.

def greet_all(names: list[str]) -> None:

    for name in names:

        print("Hello", name)

Brand New Modules


The zoneinfo module brings support for the IANA time zone database to the standard library. It adds zoneinfo.ZoneInfo, a concrete datetime.tzinfo implementation backed by the system’s time zone data.

>>> from zoneinfo import ZoneInfo

>>> from datetime import datetime, timedelta


Using the graphlib.TopologicalSorter class of the graphlib, one can perform topological sorting of graphs

Dropped Items

The new Python version ditched a bunch of methods, functions and modules for good. Here are a few:

  • tostring() and fromstring() have been removed
  •  C function PyImport_Cleanup() has been removed.
  • _dummy_thread and dummy_threading modules have been removed.

Find the complete list of updates here.

What Do You Think?

Join Our Discord Server. Be part of an engaging online community. Join Here.

Subscribe to our Newsletter

Get the latest updates and relevant offers by sharing your email.

Copyright Analytics India Magazine Pvt Ltd

Scroll To Top