PEP 622 introduced match statement as an alternative to if-elif-else. However, one thing I can't find in the proposal or in any of the material online is whether the match statement can be used as an expression and not just as a statement. A couple of examples to make it clear: Example 1: def make_point_2d(pt): match pt: case (x, y): return Point2d(x, y) case _: raise TypeError("not a point we support") Example 2: match response.status: case 200: do_something(response.data) case 301 | 302: retry(response.location) In the first example, the function returns from inside a case clause, and in the second example, nothing is returned. But I want to be able to do something like the following hypothetical example: spouse = match name: case "John": "Jane" case "David": "Alice" print(spouse) But it doesn't compile. Continue reading...