[Tutor] Case ? (fwd)

Danny Yoo dyoo at hkn.eecs.berkeley.edu
Wed Jul 6 22:29:05 CEST 2005

> > It's a proposed enhancement:
> >
> >    http://www.python.org/peps/pep-0275.html
> Since this didn't come out in Python 2.4, is it "automatically"
> re-considered for 2.5 ?


It's still in the "open" set of peps:


so there's no guarantee that PEP 275 go in. I think there's still quite a
bit of revision and discussion ahead before it's ready for the community.
The PEP system is described here:


> > in Python because it's not hard to use functions as values --- most
> > people haven't really missed case/switch statements in Python because
> > dispatch tables can be very effective.

[code cut]

> > where we're essentially mimicking the jump table that a case/switch
> > statement produces underneath the surface.
> Sure, this is nice.
> It does require one to "functionalize" each case, tho, rather than
> "doing the work" in the body of the case.

Yes --- although that restriction might be a good thing, to force
programmers to break their code into smaller functions.  *grin*

Certain syntactic constraints in Python do put a cap on how complicated or
long our programs can be; I personally rationalize this as an attempt to
keep Python programs readable.

> > One other consideration about C's case/switch statement is its
> > bug-proneness: it's all too easy to programmers to accidently forget
> > to put 'break' in appropriate places in there.
> Years ago, I did this:
> #define is :{
> #define esac break;}

[code example cut]

Cute.  *grin*

Aside: I'm not against the idea of that style of case analysis; I'm
starting to get infatuated with the more general idea of "pattern
matching" that other programming languages --- for example, PLT Scheme and
OCaml --- provide.  But, unfortunately, I don't see anything like pattern
matching hitting Python anytime soon.

I just don't like how C does it, because it's so close to how the
underlying hardware works that it seems designed to be easy for the C
compiler writer to implement, rather than for the casual programmer to

More information about the Tutor mailing list