[Rhodri James
I'm seriously going to maintain that I will forget the meaning of "case _:" quickly and regularly,
Actually, you won't - trust me ;-)
just as I quickly and regularly forget to use "|" instead of "+" for set union. More accurately, I will quickly and regularly forget that in this one place, "_" is special.
Because that's the opposite of "accurate". There's nothing special about "_" "in this one place". It's but a single application of that "_" is used as a wildcard in _all_ matching contexts throughout the PEP. And it's not even new with this PEP. "_" is routinely used already in lots of code to mean "the syntax requires a binding target here, but I don't care about the binding", from lists = [[] for _ in range(100)] to first, _, third = triple The last is especially relevant, because that's already a form of destructuring. The only thing new about this use of "_" in the PEP is that it specifies no binding will occur. Binding does occur in the examples above (because there's nothing AT ALL special about "_" now - it's just a one-character identifier, and all the rest is convention, including that the REPL uses it to store the value of the last-displayed object).
See reply to Glenn. Can you give an example of a dotted name that is not a constant value pattern? An example of a non-dotted name that is? If you can't do either (and I cannot)), then that's simply what "if
case long.chain.of.attributes:
That's a dotted name and so is a constant value pattern - read the PEP. Every dotted name in a pattern is looked up using normal Python name resolution rules, and the value is used for comparison by equality with the matching expression (same as for literals).
or more likely
case (foo.x, foo.y)
Ditto.
for the first. For the second, it's a no-brainer that you can't have a non-dotted name as a constant value pattern, since the current constant value pattern mandates a leading dot.
Not so. _Solme_ dot is necessary and sufficient to identify a constant value pattern now. A leading dot is only _required_ in case an intended constant value pattern would have no dots otherwise.