[Python-Dev] Switch statement (original) (raw)
Guido van Rossum guido at python.org
Wed Jun 21 19:27:23 CEST 2006
- Previous message: [Python-Dev] Switch statement
- Next message: [Python-Dev] Switch statement
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 6/21/06, Phillip J. Eby <pje at telecommunity.com> wrote:
At 09:55 AM 6/21/2006 -0700, Guido van Rossum wrote: >BTW a switch in a class should be treated the same as a global switch. >But what about a switch in a class in a function?
Okay, now my head hurts. :)
Welcome to the club. There's a Monty Python sketch appropriate...
A switch in a class doesn't need to be treated the same as a global switch, because locals()!=globals() in that case.
But that's not the discerning rule in my mind; the rule is, how to define "at function definition time".
I think the top-level is the only thing that really needs a special case vs. the general "error if you use a local variable in the expression" rule.
To the contrary, at the top level my preferred semantics don't care because they don't use a hash.
The strict rules about locals apply when it occurs inside a function, since then we eval the case expressions at function definition time, when the locals are undefined. This would normally be good enough, but I worry (a bit) about this case:
y = 12 def foo(x, y): switch x: case y: print "something"
which to the untrained observer (I care about untrained readers much more than about untrained writers!) looks like it would print something if x equals y, the argument, while in fact it prints something if x equals 12.
Actually, it might be simpler just to always reject local variables -- even at the top-level -- and be done with it.
Can't because locals at the top-level are also globals.
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] Switch statement
- Next message: [Python-Dev] Switch statement
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]