What are the new features added in Python 3.10 version?

In this article, we will learn the new features in Python 3.10, compared to 3.9. Let’s see the features −

Parenthesized context managers

Using enclosing parentheses for continuation across multiple lines in context managers is now supported. This allows formatting a long collection of context managers in multiple lines in a similar way as it was previously possible with import statements

User-Defined Type Guards

TypeGuard has been added to the typing module to annotate type guard functions and improve information provided to static type checkers during type narrowing.

Enhanced error messages

If you will get an error while running a Python program, the error messages will now be more accurate and will give the exact error information


When parsing code that contains unclosed parentheses or brackets the interpreter now includes the location of the unclosed bracket of parentheses instead of displaying SyntaxError: unexpected EOF while parsing or pointing to some incorrect location

SyntaxError exceptions raised by the interpreter will now highlight the full error range of the expression that constitutes the syntax error itself, instead of just where the problem is detected.


Many IndentationError exceptions now have more context regarding what kind of block was expecting an indentation

Precise line numbers for debugging

More precise and reliable line numbers for debugging, profiling and coverage tools. Tracing events, with the correct line number, are generated for all lines of code executed and only for lines of code that are executed.

Structural Pattern Matching

Structural pattern matching has been added in the form of a match statement and case statements of patterns with associated actions. Patterns consist of sequences, mappings, primitive data types as well as class instances. Pattern matching enables programs to extract information from complex data types, branch on the structure of data, and apply specific actions based on different forms of data

Enhanced Modules

The following modules are enhanced with new features, new methods, etc.

array − The index() method of array.array now has optional start and stop parameters.

base64 − Added base64.b32hexencode() and base64.b32hexdecode() to support the Base32 Encoding with Extended Hex Alphabet.

bisect − Added the possibility of providing a key function to the APIs in the bisect module.

contextlib − Add a contextlib.aclosing() context manager to safely close async generators and objects representing asynchronously released resources.

distutils − The distutils package is deprecated, to be removed in Python 3.12.

encodings − The encodings.normalize_encoding() now ignores non-ASCII characters.