[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).

    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.


More information about the Python-Dev mailing list