On Wed, Jun 24, 2020 at 5:30 AM Rob Cliffe via Python-Dev
<[email protected]> wrote:
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.
It's not really arbitrary expressions, though. It's more like an
assignment target list, but with some handling of constants.
case (x, y):
is very similar to
(x, y) = ...