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

Josiah Carlson jcarlson at uci.edu
Tue Jun 13 01:07:18 CEST 2006


skip at pobox.com wrote:

Greg> Before accepting this, we could do with some debate about the Greg> syntax. It's not a priori clear that C-style switch/case is the Greg> best thing to adopt. Oh sure. That debate should probably leverage PEP 275.

Along the lines of PEP 275, one of my concerns with the use of a switch/case automatic conversion or even explicit syntax is that of low-hanging fruit...

In my experience, switch/case statements are generally used to either structure code explicitly with state handling code, improve performance of such state handling, or both. I think that if we are going to be modifying Python to include such a syntax or automatic conversion, those standard use-cases be considered primary.

With that said, the low-hanging fruit, in my opinion, are precisely those cases specified in PEP 275 in the Solution 1 option. For the majority of use-cases that I've seen, automatic conversion for the if/elif/else blocks with a hash table would cover this low-hanging fruit, and would be a nice transparent optimization.

One other nice thing about such an optimization is that it could work fine for known-immutable types (strings, ints, ...), and with work, could preserve previous behavior for not-known-immutable types.*

To handle the case of if x.i ==...: ... elif x.i == ...: ..., we could state that the optimization will only occur if the 'switched on' value is a bare name (x is OK, x.i and x[i] are not).



More information about the Python-Dev mailing list