[Python-Dev] Switch statement
skip at pobox.com
skip at pobox.com
Sun Jun 11 00:53:14 CEST 2006
Thomas> As the subject of this e-mail says, the attached patch adds a
Thomas> "switch" statement to the Python language.
Thanks for the contribution. I patched my sandbox and it built just fine.
I'm going out of town for a couple weeks, so I'll point out what everyone
else is thinking then duck out of the way:
* Aside from the modified Grammar file there is no documentation.
* There are no test cases.
* Can you submit a patch on SourceForge?
Other than that, my trivial first attempt worked fine:
#!/usr/bin/env python
switch raw_input("enter a, b or c: "):
case 'a':
print 'yay! an a!'
case 'b':
print 'yay! a b!'
case 'c':
print 'yay! a c!'
else:
print 'hey dummy! I said a, b or c!'
(Need to teach python-mode about the switch and case keywords.)
You mentioned:
Thomas> I got a bit lost as to why the SWITCH opcode is necessary for
Thomas> the implementation of the PEP. The reasoning seems to be
Thomas> improving performance, but I'm not sure how a new opcode could
Thomas> improve performance.
Your implementation is straightforward, but uses a series of DUP_TOP and
COMPARE_OP instructions to compare each alternative expression to the
initial expression. In many other languages the expression associated with
the case would be restricted to be a constant expression so that at compile
time a jump table or dictionary lookup could be used to jump straight to the
desired case.
Skip
More information about the Python-Dev
mailing list