[Python-Dev] Switch statement (original) (raw)

Guido van Rossum guido at python.org
Thu Jun 22 17:20:48 CEST 2006


On 6/22/06, Roger Miller <rogermiller at alum.mit.edu> wrote:

Part of the readability advantage of a switch over an if/elif chain is the semantic parallelism, which would make me question mixing different tests in the same switch. What if the operator moved into the switch header?

switch x ==: case 1: foo(x) case 2, 3: bar(x) switch x in: case (1, 3, 5): doodd(x) case (2, 4, 6): doeven(x) "switch x:" could be equivalent to "switch x ==:", for the common case.

That's difficult (I mean impossible) for Python's parser, since x == is also the legal start of an expression.

I've also been wondering whether the 'case' keyword is really necessary? Would any ambiguities or other parsing problems arise if you wrote:

switch x: 1: foo(x) 2: bar(x) It is debatable whether this is more or less readable, but it seemed like an interesting question for the language lawyers.

That's no problem for the parser, as long as the expressions are indented. ABC did this.

But I think I like an explicit case keyword better; it gives a better error message if the indentation is forgotten.

-- --Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list