[Python-Dev] Switch statement

Jim Jewett jimjjewett at gmail.com
Fri Jun 23 23:20:05 CEST 2006


On 6/23/06, Guido van Rossum <guido at python.org> wrote:
> Here are a few examples showing my objections against first-use.

[Problem with nested scopes; today this usually shows up as (invalid)
bug reports about lambda, in which failure to bind a "default"
variable "to itself" causes it to take on the value at the end of the
loop, instead of the value of the index when defined.]

[Problem with using a parameter as a case selector -- at least these
aren't available at definition time.]

> With the def-time rule, you'd have to work a lot harder to construct
> an example that works differently than the casual reader would expect.

Anything which use the same names in the local scope, particularly if
those names are themselves marked final (or static).

a=1
b=2
c=3
    def f(v):
        a=4    # This gets ignored?
        final b=5    # But what about this?  It is local, but a
constant known in advance
        switch v:
        case in (a, b, c): ...
        final c=6    # Also a constant, but textually after the case keyword.

-jJ


More information about the Python-Dev mailing list