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

Talin talin at acm.org
Fri Jun 16 06:35:58 CEST 2006


Phillip J. Eby wrote:

As has already been pointed out, this

1) adds function call overhead, 2) doesn't allow changes to variables in the containing function, and 3) even if we had a rebinding operator for free variables, we would have the overhead of creating closures. The lambda syntax does nothing to fix any of these problems, and you can already use a mapping of closures if you are so inclined. However, you'll probably find that the cost of creating the dictionary of closures exceeds the cost of a naive sequential search using if/elif.

This brings me back to my earlier point - I wonder if it would make sense for Python to have a non-closure form of lambda - essentially an old-fashioned subroutine:

def foo( x ):
   x = 0
   sub bar: # Arguments are not allowed, since they create a scope
      x = y # Writes over the x defined in 'foo'

   bar()

The idea is that 'bar' would share the same scope as 'foo'. To keep the subroutine lightweight (i.e. just a single jump and return instruction in the virtual machine) arguments would not be allowed.

-- Talin



More information about the Python-Dev mailing list