[Python-Dev] Switch statement

Fredrik Lundh fredrik at pythonware.com
Wed Jun 21 19:53:42 CEST 2006

Guido van Rossum wrote:

> But in most cases the 'constant' is actually an expression involving a
> global, often even a global in another module. (E.g. sre_compile.py)
> The compiler will have a hard time proving that this is really a
> constant, so it won't optimize the code.

unless we come up with a way to make it possible to mark an variable as 
a constant.

> The proposed switch semantics (create the table when the containing
> function is defined) get around this by "defining" what it means by
> "constant".

well, given that people find it really confusing that the two X:es in

    def func(value=X):
        print X

are evaluated at different times, I'm not sure it's a good idea to 
introduce more "evaluation scopes".

but sure, I'm sure people doing certification tests would love questions 

     Q: If a program calls the 'func' function below as 'func()'
        and ONE and TWO are both integer objects, what does 'func'
        print ?

     ONE = 1
     TWO = 2

     def func(value=ONE):
         switch value:
         case ONE:
             print value, "is", ONE
         case TWO:
             print value, "is", TWO

     a: "1 is 1"
     b: "2 is 2"
     c: nothing at all
     d: either "1 is 1" or nothing at all
     e: who knows ?

but I cannot say I find it especially Pythonic, really...


More information about the Python-Dev mailing list