Fwd: [Tutor] using exceptions to implement case/switch?
kent_johnson at skillsoft.com
Fri Oct 15 23:47:03 CEST 2004
I'm really confused now. Are you trying to duplicate the visual appearance
of a case statement? Your solution hasn't eliminated the conditionals, it
just hides them in a helper function. It adds the overhead of throwing and
catching an exception.
If your question is, how do I do this the Python way? - the usual solution
is either chained conditionals (if / elif / ... / else) or using a dict as
a dispatcher. If your question is, will this work? - yes, it will work, but
I sure don't understand why you would want to do it that way.
At 02:32 PM 10/15/2004 -0700, Bill Campbell wrote:
>On Fri, Oct 15, 2004, Max Noel wrote:
> >(sigh... Forgot to click "reply to all". It'd be more practical if that
> >list set a reply-to header IMO...)
>Funny, my archaic mailer works just fine replying to lists by
> >Begin forwarded message:
> >>From: Max Noel <maxnoel_fr at yahoo.fr>
> >>Date: October 15, 2004 21:42:37 BST
> >>To: Bill Mill <bill.mill at gmail.com>
> >>Subject: Re: [Tutor] using exceptions to implement case/switch?
> >>On Oct 15, 2004, at 21:36, Bill Mill wrote:
> >>>I think you've misunderstood the example; pardon me if I've
> >>>misunderstood you in turn, but Kent's dispatcher will run the
> >>>functions in the current namespace. No new processes or namespaces
> >>>will be created, making your lambda method redundant.
> >>>Bill Mill
> >>>bill.mill at gmail.com
> >> I think he meant scope, not namespace. However IIRC lambda functions
> >>have their own scope, like normal functions (not 100% sure of that, I
> >>never use lambdas), thus the method is redundant either way.
>My main goal had little to do with lamdas or function calls, but the desire
>to implement a construct that closely resembles C switch or other
>language's case statements. How the exceptions are raised isn't important.
>The important thing is using multiple ``except'' sections after a ``try''
>instead of using conditional tests.
>INTERNET: bill at Celestial.COM Bill Campbell; Celestial Software LLC
>UUCP: camco!bill PO Box 820; 6641 E. Mercer Way
>FAX: (206) 232-9186 Mercer Island, WA 98040-0820; (206) 236-1676
>With Congress, every time they make a joke it's a law; and every time
>they make a law it's a joke.
> -- Will Rogers
>Tutor maillist - Tutor at python.org
More information about the Tutor