[Python-Dev] PEP 3103: A Switch/Case Statement

Nick Coghlan ncoghlan at gmail.com
Thu Jun 29 14:37:07 CEST 2006

Eric Sumner wrote:
>>> Forget subroutines for a moment - the main point of the thread was the
>>> idea that the dispatch table was built explicitly rather than
>>> automatically - that instead of arguing over first-use vs.
>>> function-definition, we let the user decide. I'm sure that my specific
>>> proposal isn't the only way that this could be done.
>> But anything that makes the build explicit is going to be so much more
>> ugly. And I still think you're trying to solve the wrong problem.
> Only if the programmer has to see it.  The dispatch table need not
> include the behaviors of each of the cases; it only needs to define
> what the cases are.  In most of the use cases I've seen, switch is
> used to define behavior for different values of an enumeration.  The
> dispatch table for an enumeration can be built wherever the values for
> the enumeration are defined (such as in a module).  Programmers don't
> need to bother with making a dispatch table unless they are defining
> enumeration values themselves.

You mean something like this?:

   switch x in colours:
     case RED:
         # whatever
     case GREEN:
         # whatever
     case BLUE:
         # whatever

I think Guido's right. It doesn't solve the underlying problem because the 
compiler still has to figure out how to build a dispatch table from the 
possible values in colours to the actual bytecode offsets of the cases.


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-Dev mailing list