On 23/06/2020 17:01, Guido van Rossum wrote:
You can combine several literals in a single pattern using `|` ("or"):
```py
case 401|403|404:
return "Not allowed"
The PEP is great, but this strikes me as horribly confusing, given that
401|403|404 is already legal syntax.
IIUC any legal expression can come between `case` and `:`, but
expressions that contain `|` at their outermost level are *interpreted
differently* than from in other contexts.
Presumably adding parentheses:
case (401|403|404):
would make it equivalent to
case 407:
Is a separator (other than whitespace) actually needed? Can the parser
cope with
case 401 403 404:
Failing that IMO preferable, albeit not ideal, possibilities would be
1) Use colon as the separator.
2) Use comma as the separator - this is already legal syntax too, but
IMO it reads more naturally.
(And IIRC there are already contexts where brackets are necessary
to indicate a tuple.)
Perhaps someone can think of something better.
I also (with others) prefer `else:` or perhaps `case else:` to using
the`_` variable.
The latter is obscure, and woudn't sit well with code that already uses
that variable for its own purposes.
Rob Cliffe
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/T4WY7QNHVODO227R5IFSK67Z6X6W2KI6/
Code of Conduct: http://python.org/psf/codeofconduct/