Python 3.10 Beta Brings Structural Pattern Matching (match‑case) and Switch‑Case Syntax
The article explains how Python 3.10 beta introduces structural pattern matching with the match‑case statement, adds a switch‑case syntax, improves context manager syntax and error messages, and provides code examples comparing match‑case to traditional if‑elif‑else constructs.
Python continues to dominate data science and AI development, with recent surveys showing over a quarter of programming jobs now require Python proficiency.
Python 3.9, released in October, added many enhancements such as dictionary merging, new string methods, and the zoneinfo module.
In November, the second alpha of Python 3.10 was released, and the beta arrived recently, featuring the long‑awaited switch‑case statement as part of the new match‑case syntax.
Although earlier proposals like PEP 3103 (2016) to add a switch statement were rejected, Python’s creator Guido van Rossum later introduced Structural Pattern Matching in PEP 634, which finally landed in Python 3.10.
Other notable beta improvements include parenthesized context managers that allow multi‑line continuation with commas:
<code>with (</code><code> CtxManager1() as example1,</code><code> CtxManager2() as example2,</code><code> CtxManager3() as example3,</code><code>):</code><code> ...</code>The interpreter now offers NameError suggestions, proposing similar variable names when a NameError is raised.
Structural pattern matching (PEP 634) lets a match statement compare a subject against a series of case patterns. The general syntax is:
<code>match subject:</code><code> case <pattern_1>:</code><code> <action_1></code><code> case <pattern_2>:</code><code> <action_2></code><code> case <pattern_3>:</code><code> <action_3></code><code> case _:</code><code> <action_wildcard></code>Example using HTTP status codes:
<code>http_code = "418"</code><code>match http_code:</code><code> case "200":</code><code> print("OK")</code><code> do_something_good()</code><code> case "404":</code><code> print("Not Found")</code><code> do_something_bad()</code><code> case "418":</code><code> print("I'm a teapot")</code><code> make_coffee()</code><code> case _:</code><code> print("Code not found")</code>The diagram below illustrates how the match‑case statement evaluates each case until a matching pattern is found.
Equivalent logic can be expressed with traditional if‑elif‑else statements, but match‑case removes repetitive comparisons and improves readability when handling many conditions.
<code>http_code = "418"</code><code>if http_code == "200":</code><code> print("OK")</code><code> do_something_good()</code><code>elif http_code == "404":</code><code> print("Not Found")</code><code> do_something_bad()</code><code>elif http_code == "418":</code><code> print("I'm a teapot")</code><code> make_coffee()</code><code>else:</code><code> print("Code not found")</code>While both approaches achieve the same result, match‑case provides a declarative style that clearly states the patterns to match, making code more maintainable, especially when matching on object types and structures.
Overall, match‑case is the headline feature of the Python 3.10 beta, offering developers a new, expressive way to handle conditional logic beyond the traditional switch‑case emulation using dictionaries.
Disclaimer: This article is compiled from online sources; copyright belongs to the original author. Contact us for removal or licensing requests.
Python Programming Learning Circle
A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.