case/switch statement?
invalidemail at aerojockey.com
invalidemail at aerojockey.com
Sun Jun 12 05:25:52 EDT 2005
Philippe C. Martin wrote:
> Leif K-Brooks wrote:
>
> > Joe Stevenson wrote:
> >> I skimmed through the docs for Python, and I did not find anything like
> >> a case or switch statement. I assume there is one and that I just
> >> missed it. Can someone please point me to the appropriate document, or
> >> post an example? I don't relish the idea especially long if-else
> >> statements.
> >
> > If you really want one, you could use
> > <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/410692>.
>
> I _love_ Python!
Well, if you loved that, here's something even more evil. This was
Bengt Richter's original idea that Cliff Wells and I improved upon.
First define some functions and classes:
. _cache = {}
.
. class _BaseCaseException(Exception):
. pass
.
. def switch(v):
. if v not in _cache:
. class _CaseException(_BaseCaseException):
. pass
. _cache[v] = _CaseException
. raise _cache[v]
.
. def case(v):
. if v not in _cache:
. class _CaseException(_BaseCaseException):
. pass
. _cache[v] = _CaseException
. return _cache[v]
.
. default = _BaseCaseException
Then you can define a switch statement like this:
. x = 2
.
. try: switch(x)
.
. except case(1):
. print "Case 1"
.
. except case(2):
. print "Case 2"
.
. except case(3):
. print "Case 3"
.
. except default:
. print "Default"
.
. except NameError:
. print "You can still catch regular exceptions like NameError"
I-love-Python-too-but-this-isn't-why-ly yr's,
--
CARL BANKS
More information about the Python-list
mailing list