On 12/07/2020 02:04, Guido van Rossum wrote:
On Sat, Jul 11, 2020 at 5:58 PM Chris Angelico <[email protected] <mailto:[email protected]>> 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
>>>
```

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.
Rob Cliffe
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/HFYHV6DKX227JT2ZR2UYLVT3N7O4JDCK/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to