[Python-Dev] Switch statement (original) (raw)

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