The purpose of this notebook is to facilitate interactive exploration of the proposed new syntax for Structural Pattern Matching in Python 3.10, as described in PEP-622.
This notebook should be run with a kernel that uses a suitable version of Python with support for this PEP's new syntax. We start by making a quick sanity check that we're running at least version 3.10 of Python, if that's not the case you need to check your runtime environment.
Note: If you are new to Jupyter Notebooks, code cells (like the one below) can be executed by typing Shift-Enter
inside the cell, or by using the "play" button (right-pointing triangle in the toolbar above).
import sys
assert sys.version_info[:2] >= (3, 10)
With that out of the way, let's introduce a very basic example that illustrates the syntax (and whether the cell below runs cleanly will be a good test that you have the right version of Python installed).
We define a dataclass
called Point
, and a whereis
function that matches points in different parts of the x-y plane:
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
def whereis(point):
match point:
case Point(0, 0):
print("Origin")
case Point(0, y):
print(f"Y={y}")
case Point(x, 0):
print(f"X={x}")
case Point():
print("Somewhere else")
case _:
print("Not a point")
With this definition we can now test various kinds of points:
whereis(Point(1, 0))
X=1
whereis(Point(0, 0))
Origin
whereis(10)
Not a point
You can explore these ideas further below. The examples
directory contains some more sample code that you can run at the terminal (you can open a new terminal with the '+' icon or from the File menu), or you can try your own. The PEP contains full details on the syntax.