[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

AltStyle によって変換されたページ (->オリジナル) /