Python 3.10 will be here later this year and I wanted to go over some of the new features that will make our lives a little easier.
This allows you to have multiple context managers in one
with statement. Instead of nesting context managers and the associated complexity, you can open everything at once in one expression. One use case would be having multiple files open. Now all the needed files can be opened and closed in the same context without nesting.
with (open('source_a.txt') as source_a, open('source_b.txt') as source_b, open('out.txt', 'w') as out): <perform some logic to use the contents of all the files>
Error messages have been improved so that if you are missing a bracket, the error handler will highlight the portion of code it thinks is missing the bracket instead of the first assignment that failed due to a missing bracket.
Previous implementations would report where the interpreter quit working, which was after the part of code that was missing the bracket. This should make troubleshooting code much easier.
Python is getting a feature that seems like a switch statement and can be used that way, but is actually more flexible that simple equality checks.
From the python docs "Patterns consist of sequences, mappings, primitive data types as well as class instances." This means that you can match on a broad array of criteria and can compare class instances against one another based on how the instances were created. You can also use array methods, like
map and match on the output from that.
This will be a massive improvement over using imperative
if clauses. This more declarative approach is easier to read and can be implemented in complex cases easier.