If I've understood this correctly, my immediate reaction is one of horror. I'd assumed that a case that failed to match would have no effect.On Sat, Jul 11, 2020 at 5:58 PM Chris Angelico <rosuav@gmail.com> wrote:
Hang on. Matching happens before assignment, so this should use the
previous value of x for the matching. At least, that's my
understanding. If you do something like:
case Point(x, 2):
it won't assign x unless the second coordinate is 2, right?
Good catch. That's actually undefined -- we want to let the optimizer have some leeway in how to generate the best code for matching. See https://www.python.org/dev/peps/pep-0622/#performance-considerations
Currently it doesn't optimize all that much -- it just processes patterns from left to right:```
>>> match Point(3, 3):
... case Point(x, 42): pass
...
>>> print(x)
3
>>>
```