[Python-Dev] Re: PEP 622 constant value syntax idea

2020年7月15日 10:21:07 -0700

On 15/07/2020 12:37, Mohammad Foroughi via Python-Dev wrote:
Hi, I had an idea regarding the pattern matching issue of comparing with a 
previous constant variable instead of assigning to a new local variable. I'm 
not sure if this has been brought up before but instead of using a symbol with 
the case statement what if we used a keyword.
Your mailer mangled your example a bit, but it's fairly clear all the same. The problem with using a keyword is that it starts getting really ungainly with complex patterns:
match value:
 case global x:
 print("value matches")
 case Point(global x, y):
 print("value matches x, y captured")
 case Line(Point(global x1, y1), Point(x2, global y2)):
 print("getting a bit hard to read here")
Probably the simplest thing to do is to use a namespace to force value comparison.
from types import SimpleNamespace
# ... stuff ...
const = SimpleNamespace(x=x)
match value:
 case const.x:
 print("value matches")
 case Point(const.x, y):
 my_useful_struct.y = y
It's not ideal, but it's fairly clear what's going on if you choose your names carefully. (And damn it, I've argued myself round to the position I was trying to argue Tim out of a few weeks ago. Curses!)
--
Rhodri James *-* Kynesim Ltd
_______________________________________________
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/XVUUS4D5JMG5MWWGWPVDV6XNGR34AU6U/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to